Categories
Dev's Corner

Front-end là gì? 13 Kỹ năng cần có để trở thành Front End Developer

Front-end là gì? Front end developer là sao?

Bạn đã bao giờ nhìn vào website yêu thích của mình và tự hỏi tại sao nó lại trông như vậy, các nút hoạt động như thế nào, hoặc nghĩ, “nó phức tạp đến mức nào?” hoặc, “Ước gì mình có thể làm giống vậy“?

Trong khi thiết kế web quyết định giao diện của một trang web, thì front end developement là cách mà thiết kế đó thực sự được triển khai trên web.

Mọi thứ bạn thấy trên website đều được xây dựng bằng front end development (đôi khi còn được gọi là front end web development) – và những người đứng đằng sau nó là: front end developer.

Một front end web developer là một kỹ sư phần mềm, người thực hiện các thiết kế web thông qua các ngôn ngữ lập trình như HTML, CSS và JavaScript.

Front end developer có là xu hướng nghề nghiệp trong năm 2021?

Công việc của front end developer (đôi khi còn được gọi là công việc front end engineering) là một số trong các vai trò có nhu cầu nhiều nhất.

Theo khảo sát của Stack Overflow năm 2020, các front end developer ở Mỹ kiếm trung bình 110.000 đô mỗi năm.

Hiện tại, có 14.000 vị trí front end developer đang tuyển trên khắp nước Mỹ, so với 11.600 vị trí back end developer.

Mức lương trung bình của Front End Developer
Mức lương trung bình của Front End Developer. Ảnh: StackOverFlow

Trở thành front end developer có phải là lựa chọn sự nghiệp bền vững?

Trở thành front end developer là một sự thay đổi sự nghiệp về lâu dài.

Việc tuyển dụng các web developer ở Mỹ dự kiến ​​sẽ tăng 8% từ năm 2019 đến năm 2029, nhanh hơn nhiều so với mức trung bình cho tất cả các nghề nghiệp.

Chỉ riêng ở bang California, số lượng web developer dự kiến ​​sẽ tăng nhanh hơn nhiều so với tốc độ tăng trưởng trung bình cho tất cả các ngành nghề – công việc cho web developer dự kiến ​​sẽ tăng 27,6%, tương đương 13.210 việc làm vào năm 2028.

Nếu những điều này nghe giống công việc mơ ước của bạn, chúng ta hãy chia nhỏ tất cả các kỹ năng mà front end developer cần tới để bạn có thể bắt đầu sự nghiệp front end development.

Bước đầu tiên là bắt đầu học một số kỹ năng cơ bản mà các front end developer sử dụng hàng ngày.

Các kỹ năng chính của Front end developer

Các Front end developer sử dụng 3 ngôn ngữ lập trình chính để lập trình website và các thiết kế ứng dụng web được web designer tạo:

  • HTML
  • CSS
  • JavaScript
CSS HTML Javascript
CSS HTML Javascript. Ảnh: Freepik

Code mà front end developer viết chạy bên trong trình duyệt web của người dùng (được gọi là phía client, ngược với back end developer, người viết code chạy phía server bằng cách sử dụng môi trường thời gian chạy mã nguồn mở – open source runtime environment như Node.js hoặc với ngôn ngữ lập trình như Python).

Các full-stack developer có thể thoải mái lập trình với cả ngôn ngữ front end và back end.

Một back end developer giống như một kỹ sư thiết kế và tạo ra các hệ thống giúp một thành phố hoạt động (điện, nước và cống rãnh, phân vùng, v.v.), còn front end developer là người dựng ra đường phố và đảm bảo mọi thứ đều được kết nối hợp lý để mọi người có thể sống trong đó.

Một front end developer còn chịu trách nhiệm đảm bảo rằng không có lỗi nào trên giao diện người dùng, cũng như đảm bảo rằng thiết kế xuất hiện đúng như yêu cầu của nó trên các nền tảng và trình duyệt khác nhau.

Tất cả những tác vụ này đều quan trọng với trải nghiệm người dùng.

Tôi đã xem qua hàng chục danh sách việc làm của vị trí front end developer để xem kỹ năng nào đang được cần nhiều nhất.

Hãy nắm vững những kỹ năng này bên dưới và bạn chắc chắn sẽ có một công việc tuyệt vời dành cho front end developer!

1. HTML & CSS

HTML (Ngôn ngữ đánh dấu siêu văn bản) và CSS (Trang tính kiểu xếp tầng) là những khối xây dựng cơ bản nhất của lập trình web.

Nếu không có hai kỹ năng này, bạn không thể tạo thiết kế trang web – tất cả những gì bạn có là văn bản thuần túy chưa được định dạng trên màn hình.

Trên thực tế, bạn thậm chí không thể thêm hình ảnh vào một trang mà không có HTML!

Trước khi bắt đầu bất kỳ con đường sự nghiệp phát triển web nào, bạn sẽ phải thành thạo việc lập trình với HTML và CSS.

Tin tốt là việc có được kiến thức làm việc vững chắc về một trong hai thứ này có thể được thực hiện chỉ trong vài tuần. Chỉ riêng kiến thức HTML và CSS sẽ cho phép bạn xây dựng các trang web cơ bản.

2. JavaScript

JavaScript cho phép bạn thêm rất nhiều chức năng vào trang web của mình và có thể tạo rất nhiều ứng dụng web cơ bản chỉ sử dụng HTML, CSS và JavaScript (viết tắt là JS).

JavaScript - một trong những kỹ năng cơ bản của Front End Developer
JavaScript – một trong những kỹ năng cơ bản của Front End Developer. Ảnh: Dev.to

Ở cấp độ cơ bản nhất, JS được sử dụng để tạo và kiểm soát những thứ như bản đồ cập nhật theo thời gian thực, phim tương tác và trò chơi trực tuyến.

Các trang web như Pinterest sử dụng JavaScript để làm cho giao diện người dùng của họ dễ sử dụng (thực tế là trang không tải lại là nhờ JavaScript!).

Đây cũng là ngôn ngữ lập trình phổ biến nhất trên thế giới, vì vậy, bất kể kế hoạch nghề nghiệp của bạn là gì, đó cũng là thứ cực kỳ quý giá cần học.

3. jQuery

jQuery là một thư viện JavaScript: một tập hợp các plugin và tiện ích mở rộng giúp phát triển với JavaScript nhanh hơn và dễ dàng hơn.

Thay vì phải lập trình mọi thứ từ đầu, jQuery cho phép front end web developer thêm các phần tử tạo sẵn vào các dự án, sau đó tùy chỉnh khi cần thiết (đó là lý do tại sao việc biết JavaScript lại quan trọng như vậy).

Bạn có thể sử dụng jQuery cho những thứ như hẹn giờ đếm ngược, tự động hoàn thành biểu mẫu tìm kiếm và thậm chí tự động sắp xếp lại và thay đổi kích thước layout dạng lưới.

4. JavaScript framework

Các JS framework (bao gồm Angular, Backbone, Ember, Vue.js và React) cung cấp một cấu trúc tạo sẵn cho JavaScript code của bạn.

Có nhiều loại JavaScript framework khác nhau cho các nhu cầu khác nhau, mặc dù 5 framework được đề cập là phổ biến nhất trong danh sách việc làm thực tế, đặc biệt là React.

Trên thực tế, biết React có thể giúp bạn kiếm thêm tới 8.000 đô la so với mức lương trung bình của front end developer.

Mặc dù việc học các JavaScript framework mất thời gian, nhưng chúng thực sự tăng tốc độ phát triển bằng cách cho bạn một bước khởi đầu và có thể được sử dụng với các thư viện như jQuery để giảm thiểu khối lượng công việc ban đầu bạn phải làm.

5. Front end framework

CSS và front end framework (front end framework phổ biến nhất là Bootstrap) làm cho CSS những gì mà JS framework làm cho JavaScript: chúng cung cấp cho bạn khởi điểm để lập trình nhanh hơn.

Vì rất nhiều CSS bắt đầu với các yếu tố giống nhau từ dự án này sang dự án khác, nên một framework xác định tất cả những điều này cho bạn từ trước là cực kỳ có giá trị.

Hầu hết các danh sách việc làm front end developer đều mong bạn quen thuộc với cách hoạt động của những framework này và cách sử dụng chúng.

6. Có kinh nghiệm với ngôn ngữ tiền xử lý CSS (CSS Preprocessors)

Ngôn ngữ tiền xử lý là một yếu tố khác mà front end developer có thể sử dụng để tăng tốc lập trình CSS.

Ngôn ngữ tiền xử lý CSS thêm chức năng bổ sung vào CSS giúp cho CSS có thể mở rộng và dễ làm việc hơn.

Nó xử lý code trước khi xuất bản lên trang web và biến nó thành CSS được định dạng tốt và thân thiện với nhiều trình duyệt.

Sass và LESS là hai ngôn ngữ tiền xử lý được sử dụng nhiều nhất.

7. Có kinh nghiệm với các Dịch vụ và API RESTful

REST là viết tắt của cụm từ Chuyển trạng thái đại diện (Representatinal State Transfer).

Về cơ bản, đó là một kiến ​​trúc nhẹ giúp đơn giản hóa giao tiếp mạng trên web, còn các Dịch vụ và API RESTful là các dịch vụ web tuân theo kiến ​​trúc REST.

Giả sử bạn muốn viết một ứng dụng hiển thị tất cả những người bạn trên mạng xã hội của bạn theo thứ tự mà bạn đã trở thành bạn bè.

Bạn có thể thực hiện cuộc gọi tới API RESTful của Facebook để đọc danh sách bạn bè của mình và trả lại dữ liệu đó.

Là một front end developer, bạn cũng có thể gọi API của Twitter (Twitter cũng sử dụng API RESTful).

Quá trình chung là giống nhau đối với bất kỳ dịch vụ nào sử dụng RESTful API, chỉ có điều dữ liệu trả về sẽ khác.

Mặc dù nghe có vẻ phức tạp và mang tính kỹ thuật, nhưng đó là một tập hợp các nguyên tắc và phương pháp thực hành đơn giản để bạn biết cách giao tiếp với một dịch vụ web.

Nó cũng giúp cho dịch vụ web hoạt động tốt hơn, mở rộng tốt hơn, hoạt động đáng tin cậy hơn và dễ dàng sửa đổi hoặc di chuyển hơn.

8. Thiết kế Responsive và Mobile

Chỉ riêng ở Mỹ, nhiều người truy cập Internet từ thiết bị di động của họ hơn là từ máy tính để bàn, vì vậy, không có gì ngạc nhiên khi kỹ năng thiết kế responsive và mobile là cực kỳ quan trọng đối với nhà tuyển dụng.

Thiết kế responsive và mobile.
Thiết kế responsive và mobile. Ảnh: Smallbiztrends

Thiết kế responsive nghĩa là bố cục của trang web (và đôi khi là chức năng và nội dung) sẽ thay đổi dựa trên kích thước màn hình và thiết bị mà ai đó đang sử dụng.

Ví dụ: khi bạn truy cập một trang web từ máy tính để bàn có màn hình lớn, bạn sẽ thấy nhiều cột, đồ họa lớn và tương tác được tạo riêng cho người dùng chuột và bàn phím.

Trên thiết bị di động, cùng một trang web sẽ xuất hiện dưới dạng một cột duy nhất được tối ưu hóa cho tương tác chạm, nhưng sử dụng các tệp cơ sở giống nhau.

Thiết kế dành cho thiết bị di động có thể bao gồm thiết kế responsive, hoặc cũng có thể là tạo ra thiết kế dành riêng cho thiết bị di động.

Đôi khi bạn muốn trải nghiệm người dùng khi truy cập trên máy tính để bàn hoàn toàn khác với khi truy cập từ smartphone. Trong trường hợp đó, trang web dành cho thiết bị di động sẽ hoàn toàn khác.

Một tngân hàng trực tuyến nếu có một thiết kế riêng cho thiết bị di động sẽ cho phép người dùng xem những thứ như vị trí ngân hàng gần nhất và chế độ xem tài khoản được đơn giản hóa (vì màn hình di động nhỏ hơn).

9. Phát triển Cross-browser

Các trình duyệt hiện đại đang trở nên khá tốt trong việc hiển thị các trang web một cách nhất quán, nhưng vẫn có sự khác biệt trong cách chúng diễn giải code ở phía back end.

Cho đến khi tất cả các trình duyệt hiện đại hoạt động hoàn hảo với các tiêu chuẩn web, việc biết cách làm cho từng trình duyệt hoạt động theo cách bạn muốn là một kỹ năng quan trọng.

Đó là tất cả những gì về phát triển cross-browser (nhiều trình duyệt).

10. Hệ thống quản lý nội dung (CMS) và E-commerce

Hầu hết các trang web hiện nay đều được xây dựng trên hệ thống quản lý nội dung (CMS), nền tảng thương mại điện tử là một loại CMS cụ thể.

CMS phổ biến nhất trên thế giới là WordPress, là “hậu trường” của hàng triệu trang web. Trên thực tế, gần 60% các trang web sử dụng CMS là WordPress.

Các CMS phổ biến khác bao gồm Joomla, Drupal và Magento. Mặc dù việc biết những thứ này sẽ không đưa bạn trở thành một chuyên gia WordPress, nhưng chúng có thể cho cho bạn một ngách thị trường tiềm năng là các công ty sử dụng các hệ thống đó.

Là một front end developer, các kỹ năng liên quan CMS có thể mang lại lợi thế cho bạn khi tìm việc.

11. Kiểm thử và gỡ lỗi

Một thực tế xảy ra như cơm bữa đối với front end: Bug. Việc làm quen với quy trình kiểm thử và gỡ lỗi là rất quan trọng.

Kiểm thử và gỡ lỗi
Kiểm thử và gỡ lỗi. Ảnh: Strongqa

Kiểm thử đơn vị (Unit testing) là quá trình kiểm tra các khối mã nguồn (source code) riêng lẻ (các hướng dẫn cho biết trang web sẽ hoạt động như thế nào) và các khung kiểm thử đơn vị cung cấp một phương pháp và cấu trúc cụ thể để thực hiện việc đó (có những cấu trúc và phương pháp khác nhau cho mỗi ngôn ngữ lập trình).

Một loại kiểm thử phổ biến khác là kiểm thử UI (giao diện người dùng), hay còn gọi là kiểm thử chấp nhận (acceptance testing), kiểm thử trình duyệt (browser testing) hoặc kiểm thử chức năng (functional testing), trong đó bạn kiểm tra để đảm bảo rằng trang web hoạt động như bình thường khi người dùng thực sự sử dụng trang web.

Bạn có thể viết các bài kiểm thử để tìm kiếm những thứ như HTML cụ thể trên một trang web sau khi thực hiện một hành động – chẳng hạn như đảm bảo rằng nếu người dùng quên điền vào trường thông tin bắt buộc, thông báo lỗi sẽ bật lên.

Gỡ lỗi chỉ đơn giản là lấy tất cả các “lỗi” mà các bài kiểm thử đó phát hiện ra (hoặc người dùng của bạn phát hiện ra sau khi trang web của bạn được khởi chạy), hãy tìm ra lý do và cách chúng xảy ra và khắc phục sự cố.

Các công ty khác nhau sử dụng các quy trình khác nhau cho việc này, nhưng nếu bạn đã sử dụng một quy trình này, bạn có thể thích nghi với những quy trình khác một cách khá dễ dàng.

Vì kiểm thử và ghi lỗi đóng góp rát nhiều vào trải nghiệm người dùng tích cực, chúng là những kỹ năng quý giá mà nhà phát triển giao diện người dùng cần biết.

12. Hệ thống kiểm soát phiên bản và Git

Hệ thống kiểm soát phiên bản cho phép bạn theo dõi các thay đổi đã được thực hiện đối với code theo thời gian. Chúng cũng giúp bạn dễ dàng hoàn nguyên về phiên bản cũ nếu bạn gặp trục trặc.

Giả sử bạn thêm một plugin jQuery tùy chỉnh và đột nhiên một nửa mã của bạn bị hỏng.

Thay vì phải cố gắng hoàn tác thủ công và sửa tất cả các lỗi, bạn có thể quay lại phiên bản trước và sau đó thử lại bằng một giải pháp khác – chẳng hạn như nhấn nút reset.

Git được sử dụng rộng rãi nhất trong số các hệ thống kiểm soát phiên bản và có thể được cài đặt bằng dòng lệnh.

Biết cách sử dụng Git sẽ là một yêu cầu đối với hầu như bất kỳ công việc phát triển nào, có thể là front end development, back end development hoặc full stack development.

Đây là một trong những kỹ năng công việc quan trọng mà các nhà phát triển cần phải có nhưng ít người thực sự nói đến.

13. Kỹ năng giải quyết vấn đề

Nếu có một thứ mà tất cả các nhà phát triển giao diện người dùng phải có, bất kể mô tả công việc hay chức danh chính thức, thì đó là kỹ năng giải quyết vấn đề xuất sắc.

Từ việc tìm ra cách triển khai tốt nhất một thiết kế, sửa các lỗi phát sinh, đến việc tìm cách làm cho front end code hoạt động với back end code mà một kỹ sư phần mềm khác đã viết, việc phát triển nói cho cùng chỉ là giải quyết vấn đề một cách sáng tạo.

Ví dụ: bạn đã tạo front end web hoạt động hoàn hảo và bàn giao cho back end developer để họ tích hợp nó với hệ thống quản lý nội dung (CMS). Đột nhiên, phân nửa tính năng ngừng hoạt động.

Một front end developer giỏi sẽ coi đây là một câu đố cần giải hơn là một thảm họa.

Tất nhiên, một front end developer ở cấp độ lão luyện sẽ lường trước những vấn đề này và cố gắng ngăn chặn ngay từ đầu!

Lược dịch từ skillcrush.com

Categories
Dev's Corner

Backend là gì? Kỹ năng cần thiết để trở thành Backend Developer

Backend Development là gì?

Backend Development đề cập tới việc phát triển ở phía máy chủ. Nó tập trung vào cơ sở dữ liệu, ngôn ngữ kịch bản (scripting), kiến trúc website.

Nó bao gồm các hoạt động đằng sau (behind-the-scene) xảy ra khi thực hiện bất kỳ hành động nào trên website. Đó có thể là đăng nhập tài khoản hoặc mua hàng từ cửa hàng trực tuyến. Mã (code) được viết bởi back-end developer giúp các trình duyệt giao tiếp với thông tin cơ sở dữ liệu.

Ví dụ:

Back end là gì?
Back end là gì?

Trong bài viết này, bạn sẽ hiểu được:

  • Các kỹ năng cần thiết để trở thành Backend developer
  • Vai trò và trách nhiệm của một Backend developer
  • Sự khác nhau giữa Frontend developerBackend developer

Các kỹ năng chính của Backend Developer

Kỹ năng để làm backend developer
Kỹ năng để làm backend developer. Ảnh: guru99.com

Đây là những kỹ năng bạn cần có để trở thành Back end developer:

1. Ngôn ngữ phát triển web

Kỹ sư backend nên biết ít nhất một ngôn ngữ lập trình phía máy chủ hoặc ngôn ngữ lập trình Backend như Java, Python, Ruby, .Net,

2. Cơ sở dữ liệu và Cache

Kiến thức về các công nghệ DBMS (hệ quản trị CSDL) khác nhau là một trong những kỹ năng quan trọng của Backend developer. MySQL, MongoDB, Oracle, SQLServer, Redis được sử dụng rộng rãi cho mục đích này.

Kiến thức về các cơ chế bộ nhớ đệm như varnish, Memcached, Redis là một điểm cộng.

3. Máy chủ

Kinh nghiệm xử lý máy chủ Apache, Nginx, IIS, Microsoft IIS là điều cần thiết. Có nền tảng tốt về Linux sẽ giúp ích rất nhiều trong việc quản trị máy chủ.

4. API (REST & SOAP)

Kiến thức về các dịch vụ web hoặc API cũng rất quan trọng. Kiến thức về việc tạo và sử dụng các dịch vụ REST và SOAP là cần thiết.

Các kỹ năng và kinh nghiệm hữu ích khác

  • Kinh nghiệm làm việc với các framework như Django cho Python, Larval cho PHP,…
  • Khả năng viết các unit test (kiểm thử đơn vị) chất lượng
  • Kiến thức về các thuật toán và cấu trúc dữ liệu
  • Nhận thức về các vấn đề bảo mật là rất quan trọng, vì mỗi lớp đều có lỗ hổng bảo mật
  • Hiểu rõ sự khác biệt giữa các nền tảng phân phối như di động và desktop
  • Tiếp xúc cơ bản với các công nghệ front end như HTML và CSS cũng quan trọng.
  • Kiến thức về quản lý session trong môi trường máy chủ phân tán

Vai trò và trách nhiệm của Back end developer

  • Công việc của Back end developer là hiểu rõ mục tiêu của website và đưa ra các giải pháp hiệu quả
  • Lưu trữ dữ liệu và đảm bảo rằng nó được hiển thị cho người dùng có quyền truy cập
  • Chịu trách nhiệm phát triển hệ thống xử lý Thanh toán như chấp nhận dữ liệu, lưu trữ an toàn thông tin và tính phí cho khoản thanh toán đó
  • Quản lý tài nguyên API hoạt động trên các thiết bị
  • Có thể tham gia vào kiến trúc hệ thống và phân tích Khoa học dữ liệu (data science)
  • Chịu trách nhiệm tổ chức logic hệ thống chạy trên các thiết bị khác nhau
  • Back end developer cũng cần tham gia vào việc xây dựng các framework hoặc kiến trúc giúp lập trình dễ dàng hơn.
  • Back end developer nên có kỹ năng triển khai các thuật toán và giải quyết các vấn đề liên quan đến hệ thống.

Khác biệt giữa Back end và Front end developer

Về bộ kỹ năng

  • Backend: Cơ sở dữ liệu, máy chủ, API…
  • Frontend: HTML, CSS và JavaScript

Về Team

  • Back-end developer phát triển ứng dụng hỗ trợ cho front-end. Nó còn cung cấp sự hỗ trợ, bảo mật và quản lý nội dung.
  • Front-end developer thiết kế giao diện của trang web, bằng cách lấy thông tin đầu vào của người dùng và điều chỉnh nó thông qua thử nghiệm

Dịch vụ độc lập

  • Back end development có thể được cung cấp như một dịch vụ độc lập dưới dạng BaaS (Back-end as a service).
  • Front-end development không thể được cung cấp độc lập.

Mục tiêu

  • Backend: Team back-end có thể cần tạo một ứng dụng xung quanh front-end và hỗ trợ nó. Ngoài ra, họ cần đảm bảo web hoạt động bình thường.
  • Frontend: Các front-end developer cần đảm bảo người dùng có thể truy cập trang web và đáp ứng tốt trên cả di động và desktop.

Lương trung bình

  • Backend: 120.000 USD mỗi năm
  • Frontend: 104.000 USD mỗi năm

Công cụ thường dùng

  • Backend: MySQL, PHP
  • Frontend: jQuery, HTML5

Tóm lại

  • Back end Development liên quan đến sự phát triển ở phía máy chủ
  • Các kỹ năng của back end developer bao gồm Ngôn ngữ phát triển, Cơ sở dữ liệu và bộ nhớ cache, Máy chủ, API (REST & SOAP)…
  • Backend web developer nên hiểu mục tiêu của trang web và đưa ra các giải pháp hiệu quả
  • Các ngôn ngữ mà front-end developer nên làm quen là HTML, CSS và JavaScript trong khi Back End developer phải làm quen với cơ sở dữ liệu, Máy chủ, API…
  • Dịch vụ phát triển front-end không thể được cung cấp độc lập nhưng dịch vụ phát triển web Backend có thể được cung cấp độc lập.

Lược dịch từ: guru99.com

Categories
Gambaru News

Cách phỏng vấn Java Developer bao đậu

“Thành công là kết quả của sự chuẩn bị kỹ càng”

Trước buổi phỏng vấn, bạn thường chuẩn bị những gì?

Ôn lại sơ bộ kiến thức, hỏi những người bạn cùng ngành, hay tham khảo từ những người phỏng vấn trước đó? 

Việc xem qua những câu hỏi phỏng vấn giúp bạn kiểm tra lại mình còn thiếu sót ở đâu, phần nào lâu rồi chưa có cơ hội xem lại. Lấp đầy những “kẽ hở li ti” là cách tuyệt vời để trau dồi cũng như nâng cao kiến thức. 

Theo kinh nghiệm của Gambaru, người phỏng vấn thường bắt đầu với những khái niệm cơ bản, sau đó tùy biến vào câu trả lời của bạn để hỏi nâng cao.

Mong muốn đầu tiên của người phỏng vấn đó chính là nền tảng kiến thức vững chắc của bạn.

Những câu hỏi thường gặp khi phỏng vấn Java Developer

Dưới đây là những câu hỏi thường gặp trong buổi phỏng vấn vị trí Java Developer:

1. Hướng đối tượng OOP

  • Hàm get/set trong Object để làm mục đích gì
  • Encapsulate Data
  • Dependency Injection
  • So sánh Abstract và Interface
  • Extend và Implement
  • Data Structure hay sử dụng
  • Khác nhau giữa Association, Aggregation và Composition (Câu hỏi nâng cao)
  • Vẽ Observer Pattern (Dựa trên level yêu cầu của vị trí)
Xem qua những câu hỏi phỏng vấn là cách giúp bạn kiểm tra nhanh kiến thức
Xem qua những câu hỏi phỏng vấn là cách giúp bạn kiểm tra nhanh kiến thức. Ảnh: Christina Morillo – Pexels

2. Java

  • String là bất biến? Đúng hay sai
  • So sánh Strong và Weak Reference, cho ví dụ cụ thể
  • Tại sao Java không hỗ trợ Multiple Inheritance
  • JDK, JRE và JVM
  • Equals () và == trong Java khác nhau như thế nào
  • Sự khác biệt giữa Heap và Stack Memory trong Java
  • Java String Pool
  • Final, Finally, Finalize
  • Cách chia sẻ biến trong Multi Threads (Nếu trong CV bạn có liệt kê dùng Threads)
  • Cách sửa lỗi khi memory leak (Nếu trong CV có đề cập vấn đề về bộ nhớ)
  • Số lượng tối thiểu Threads cần cho một Java Thread deadlock
  • Giải thích về cách hoạt động của ConcurrentHashMap
Thread Signalling, tìm lỗi đoạn code này
Ví dụ: Thread Signalling, tìm lỗi đoạn code này. Ảnh: Java Specialists
Static Locks, Code phía dưới có gì không ổn
Ví dụ: Static Locks, Code phía dưới có gì không ổn? Cách sửa. Ảnh: Java Specialists

3. SQL

  • Delete và Truncate statements
  • Drop và Truncate commands
  • Subsets SQL
  • Join trong SQL
  • Char và Varchar2 datatype trong SQL
  • Phân biệt Clustered and Non-Clustered Index trong SQL
  • ACID property trong database

4. HTTP

  • HTTP
  • Stateless
  • Stateful
  • Stateless, Session, Logout Stateless
  • Cookie và Session khác nhau ở điểm nào
  • Oauth2, JWT
  • Sự khác biệt giữa SOAP REST? Cái nào tốt hơn và tại sao
  • Put, Patch, Delete, Head
  • Các loại HTTP Status Code

5. Scaling system

Ví dụ: Có 1 server scheduler count down lượt chọn player của 1 game ABC, mỗi user sẽ có 5 lần chọn players mỗi lần user sẽ có 30 giây suy nghĩ để chọn (có thời gian count down).

Làm thế nào để scaling ra 3 nodes cho server scheduler này?

6. Tư duy Logic

Phỏng vấn thường có những bài Test về Logic
Phỏng vấn thường có những bài Test về Logic. Ảnh: Danial RiCaRoS – Unsplash

Ví dụ: 

  • Cho một non-empty list, trả về k phần tử thường gặp nhất.
  • Kết quả phải được sắp xếp theo tần số xuất hiện từ cao đến thấp, nếu có 2 phần tử cùng tần số thì trả về phần tử có thứ tự chữ cái thấp hơn (lower alphabetical order).

Ví dụ:

Input: [“i”, “love”, “leetcode”, “i”, “love”, “coding”], k = 2 Output: [“i”, “love”]

Explanation: “i” and “love” are the two most frequent words.

Note that “i” comes before “love” due to a lower alphabetical order

Hoặc bạn có thể ôn thêm các ví dụ liên quan đến xử lý chuỗi hay xử lý random.

Và cũng như tất cả các vị trí khác, bạn hãy:

  • Tập trung liên kết giữa kinh nghiệm làm việc 2 năm gần đây nhất của bạn với những yêu cầu mà công ty đăng tuyển trong Job Description.
  • Đề cập về dự án mà bạn cảm thấy tâm đắc nhất, hãy luôn nhớ thử thách bạn trải qua trong quá trình làm việc càng khó khăn sẽ càng đề cao những thứ bạn gặt hái được. Tất nhiên, mọi thông tin nên được trung thực.
  • Chia sẻ những giải pháp và “bài học xương máu” trong quá trình làm việc hay quản lý dự án.
  • Chuyên sâu phần nào thì hãy đề cập đến vấn đề đó. Nếu thực sự không chuyên, hãy mạnh dạn xin lời khuyên từ người phỏng vấn. Điều này sẽ được đánh giá cao.

Đến đây, bạn tự đánh giá mình được bao nhiêu điểm trên thang điểm 10?

Hy vọng những chia sẻ trên của Gambaru sẽ giúp bạn có được sự chuẩn bị tốt nhất trước mỗi buổi phỏng vấn nhé!

Nguồn: GNT Leaders & HR