Top 4 những câu hỏi phỏng vấn lập trình viên thường gặp

Phỏng vấn đóng vai trò quyết định đến 80% khả năng thành công của ứng viên khi ứng tuyển vị trí mới . Quá trình này đòi hỏi sự chuẩn bị kỹ về chuyên môn và cả thái độ. Cùng Ology khám phá ngay những câu hỏi phỏng vấn lập trình viên thường gặp nhé!

Thank you for reading this post, don't forget to subscribe!
Top 4 những câu hỏi phỏng vấn lập trình viên thường gặpdẫn tự học lập trình web tại nhà cho người mới bắt đầu

Các câu hỏi phỏng vấn Java Developer thường gặp

Các câu hỏi phỏng vấn Java Developer thường gặp

Với vị trí này bạn sẽ thường gặp những câu hỏi phỏng vấn lập trình viên như: 

Câu 1: Bạn hiểu như thế nào về Java?

Đây là một trong những câu hỏi phỏng vấn lập trình viên thường được các nhà tuyển dụng sử dụng. Java được phát hành bởi Sun Microsystems và hiện thuộc sở hữu của Oracle. Đây là một ngôn ngữ lập trình cấp cao, hướng đối tượng và dựa trên lớp. Tính năng đáng chú ý nhất của nó là khả năng cho phép các nhà phát triển ứng dụng viết mã code một lần và chạy nó ở bất cứ đâu. Để làm được điều này, các ứng dụng này sẽ được biên dịch thành bytecode rồi chạy trên Java được cài đặt sẵn trên nền tảng hệ điều hành.

Cú pháp của ngôn ngữ này tương tự như C và C++; Phiên bản mới nhất hiện tại là 19 được phát hành vào tháng 9 năm 2022. Đồng thời, hiện tại ngôn ngữ này được sử dụng trong nhiều lĩnh vực khác nhau. 

Câu 2: Theo bạn Garbage Collectors là gì?

Garbage Collectors là một tiến trình thụ động thực hiện các nhiệm vụ quản lý bộ nhớ trong Java. Khi thực thi một chương trình, các đối tượng được tạo ra trong heap (một phần bộ nhớ của chương trình). Sau đó nếu như đối tượng không còn được sử dụng, những người thu gom rác (Garbage Collectors) sẽ tìm thấy nó và xóa nó để lấy lại dung lượng bộ nhớ.

Câu 3: Từ khóa final là gì?

Từ khóa final trong Java là từ những từ khóa được sử dụng để giảm bớt số lượng người dùng. Lập trình viên hoàn toàn có khả năng sử dụng ở nhiều những ngữ cảnh như lớp, biến và phương thức.

Câu 4: Luồng (thread) là gì?

Thread hay còn gọi là luồng, là đơn vị nhỏ nhất, mỗi Thread sẽ thực hiện những công việc hoàn toàn riêng biệt và được quản lý bởi Máy ảo.

Những trạng thái của một Luồng: 

 

  • New: khi tạo 1 lớp instance và chưa gọi phương thức start.

  • Runnable: trạng thái Luồng đã sẵn sàng thực thi.

  • Running: đang xử lý code trong Luồng.

  • Non – Runnable (Blocked): Là trạng thái khi Luồng vẫn còn tồn tại nhưng không thể chạy vì không đủ điều kiện. 

  • Terminated: Luồng kết thúc.

Các câu hỏi phỏng vấn BackEnd Developer thường gặp

Các câu hỏi phỏng vấn BackEnd Developer thường gặpcâu hỏi phỏng vấn Java Developer thường gặp

Backend Developer chưa bao giờ hết hot, đây là vị trí được tuyển dụng nhiều và trả lương cao chót vót. Do đó, phỏng vấn vị trí này cũng không hề dễ dàng. Đây là những câu hỏi phỏng vấn lập trình viên BackEnd thường gặp. 

Câu 1: CAP Theorem là gì?

Bắt đầu danh sách câu hỏi phỏng vấn vị trí Backend Developer của bạn bằng câu hỏi lý thuyết. CAP Theorem là định lý ban đầu được phát triển bởi Eric Brewer cho các hệ thống máy tính phân tán. C, A và P đại diện cho ba yếu tố bắt buộc.  

  • C – Consistency: Tính nhất quán ở đây có nghĩa là khách hàng luôn nhìn thấy cùng một dữ liệu. Để làm điều này, chúng ta cần đồng bộ dữ liệu cho mọi người, lặp lại cho tất cả các nốt. 
  • A –  Availability: Tính sẵn sàng được hiểu là mỗi khi khách hàng gửi yêu cầu, họ sẽ nhận được câu trả lời.
  • P – Partition tolerance: Về phía hệ thống phân tán, thiết kế phải sao cho ngay cả khi một số nút bị lỗi, toàn bộ hệ thống vẫn hoạt động bình thường.

Câu 2: Tại sao bạn lại chọn kiến trúc microservices?

Câu hỏi thứ hai khi phỏng vấn vị trí này là kiến thức về hệ thống Microservices. Nhưng tại sao và khi nào bạn nên chọn Microservices?

Đầu tiên, để trả lời câu hỏi này, kiến ​​trúc Microservices có nhiều ưu điểm. Dưới đây một số câu trả lời để bạn tham khảo

  • Microservices có thể dễ dàng thích ứng với các framework và công nghệ khác. 
  • Lỗi một Microservices có thể không ảnh hưởng đến toàn bộ hệ thống. Microservices phù hợp với nhiều công ty từ lớn đến nhỏ.
  • Triển khai độc lập trong thời gian ngắn hơn so với kiến ​​trúc thông thường.

Câu 3: SQL Injection là gì?

Để trả lời câu hỏi này, chúng ta cần biết bản chất của Injection. Bản chất của phương thức tấn công này là nhằm đưa vào các tập lệnh SQL độc hại. Thực thi các câu lệnh SQL độc hại thông qua các lỗ hổng. 

  • Prepared statements with parameterized queries – Các truy vấn phải được chuẩn hóa. 
  • Input validation – blacklist validation and whitelist validation – Thực hiện validation chặt chẽ đầu vào
  • Principle of least privilege – Application accounts shouldn’t assign DBA or admin type access onto the database server – Đặt quyền tối thiểu. Tất nhiên, tài khoản ứng dụng không thể truy cập dữ liệu nhạy cảm.

Câu 4: Điểm yếu của REST web services là gì?

Câu hỏi thứ tiếp theo liên quan đến thiết kế API. Để trả lời câu hỏi này bạn cần có kinh nghiệm với REST. 

Nếu bạn có kinh nghiệm tốt hoặc đã tiếp xúc  với GraphQL, bạn sẽ có cái nhìn rõ hơn về những điểm yếu của REST web services. Để trả lời câu hỏi này, bạn có thể liệt kê một số nhược điểm của REST:

  • Nếu không có API contract giữa máy khách và máy chủ, REST cần tài liệu mô tả chính xác những gì được thực hiện ở API.
  • REST web services hoạt động dựa trên HTTP và không thể thực hiện các yêu cầu không đồng bộ.
  • Với kiến trúc REST, session can’t be maintained.

Các câu hỏi phỏng vấn FrontEnd Developer thường gặp

Các câu hỏi phỏng vấn FrontEnd Developer thường gặp

Frontend Developer cần phải có kiến thức  HTML, CSS và JavaScript. Đây là những ngôn ngữ (kỹ năng) chủ đạo. Ngoài ra, cần có kiến thức về UI/UX và các thao tác cơ bản sử dụng phần mềm thiết kế như Photoshop và AI. Cùng tham khảo những câu hỏi phỏng vấn lập trình viên FrontEnd thường gặp dưới đây.

Câu 1: Phân biệt thẻ HTML inline và block

HTML block/inline đề cập đến cách thẻ HTML được hiển thị trong trình duyệt. Ở đây block là một dạng khối có chiều rộng mặc định là 100% và chiều cao phụ thuộc vào nội dung. Mặt khác, inline biểu thị dạng nối tiếp với chiều rộng thay đổi theo độ dài dữ liệu được hiển thị.

  • Các thẻ block là div, p, header, footer, table,…
  • Các thẻ inline là span, i, b, a, br, nhãn, nút, v.v.

Sử dụng thẻ inline nếu bạn muốn hiển thị dữ liệu trong một dòng và thẻ khối nếu bạn muốn tạo một khối  có thể thiết lập khoảng trống giữa nội dung và lề. 

Câu 2: Có những cách nào để khai báo CSS

Có ba cách phổ biến để sử dụng CSS trong trang HTML:

  • Inline: Được đặt trực tiếp trong phần tử HTML thông qua thuộc tính style.
  • Internal: Khai báo CSS của bạn trong thẻ style trong chính trang HTML. Ba quy ước được sử dụng để liên kết các phần tử với CSS: thẻ, khai báo class và khai báo ID.
  • External: Đặt CSS này trong một tệp tách biệt với tệp HTML của bạn và liên kết với tệp đó bằng thẻ liên kết. Các kiểu liên kết cũng tương tự như khai báo Internal thông qua thẻ class và id. 

Về mức độ ưu tiên, CSS ưu tiên các khai báo  inline có tác động cao nhất, tiếp theo là ID, class và thẻ. Ngoài ra, bạn có thể sử dụng khai báo !important để ưu tiên CSS mà bạn muốn sử dụng.

Câu 3: Liệt kê 1 số function thao tác với DOM bạn hay sử dụng

Một số thao tác DOM cơ bản thường được sử dụng:

  • getElementById: Trả về phần tử có thuộc tính ID là giá trị được chỉ định.
  • getElementsByClassName: Trả về tập hợp các phần tử trên trang với thuộc tính class được chỉ định.
  • querySelector: Trả về phần tử đầu tiên của tập hợp kết quả được tìm thấy bởi bộ chọn CSS đã chỉ định.
  • addEventListener / removeEventListener: thêm/xóa các sự kiện hoặc hành động trên phần tử HTML.
  • appendchild/removechild: Thêm/xóa 1 DOM Node vào DOM Tree.

Câu 4: Cơ chế bất đồng bộ trong JavaScript

JavaScript là một ngôn ngữ luồng đơn. Điều này có nghĩa là các câu lệnh được thực thi lần lượt theo thời gian trước khi câu lệnh trước bắt đầu thực thi câu lệnh sau. Cơ chế không đồng bộ được thiết kế để khắc phục lỗi JavaScript không hỗ trợ đa luồng bằng cách bắt đầu thực thi cái sau ngay cả khi cái trước chưa hoàn thành.

Trong JS, thực hiện không đồng bộ bằng cách sử dụng Callback, Promise hoặc Async/Await. Lưu ý rằng Promise đã được thêm vào trong ES6, nhưng Async/Await chỉ khả dụng trong ES7 trở lên. Một vấn đề thường gặp với Async/Await là khi cần lấy dữ liệu từ máy chủ thông qua API, ta cần đợi phản hồi của máy chủ. Đây là một yêu cầu HTTP không đồng bộ.

Trên đây là một số câu hỏi phỏng vấn lập trình viên thường gặp do Ology tổng hợp. Mong rằng với những thông tin trên sẽ giúp bạn có thêm kinh nghiệm và sự tự tin, từ đó tăng khả năng tỉ lệ trúng tuyển vào vị trí này.

ĐĂNG KÝ NGAY

Ology sẵn sàng lắng nghe và tư vấn cho bạn.

Nếu bạn muốn được tư vấn cùng cô Châu 

Hãy đăng kí tại đây nhé !