Câu hỏi phỏng vấn Lập trình viên
Trong quá trình đi xin việc, lúc phỏng vấn là lúc quyết định gần như 80% kết quả sau đó, thông thường, nhà tuyển dụng sẽ quan tâm đến trình độ và thái độ của ứng viên nhưng yếu tố chuyên môn là quan trọng nhất. Bài viết giới thiệu đến bạn bộ câu hỏi phỏng vấn lập trình viên thường gặp khi xin việc.
Câu hỏi phỏng vấn lập trình viên về chuyên môn
Câu 1. Sự khác nhau giữa OLAP và OLTP là gì? Mỗi cái được sử dụng khi nào?
Cả 2 đều có thế mạnh riêng nên sẽ được sử dụng tùy vào vào mục đích của người dùng, tuy nhiên, giá cơ bản có thể phân biệt là OLTP có thể chèn, cập nhật, xóa thông tin khỏi cơ sở dữ liệu; còn OLAP thì sẽ trích xuất dữ liệu để phân tích giúp đưa ra quyết định. Về cơ bản, bạn sẽ sử dụng OLTP nếu muốn thực hiện giao dịch trực tuyến và quản lý sửa đổi cơ sở dữ liệu; sử dụng OLAP nếu bạn muốn lấy dữ liệu và phân tích dữ liệu trực tuyến.
Câu 2. Thông thường, các công ty sử dụng Excel Spreadsheets và Data Access để quản lý công việc. Rủi ro của nó là gì? Bạn có đề xuất như thế nào?
Tùy theo cách bạn nhìn nhận nhưng hãy đưa ra một số nhận xét về sự rủi ro của hai phần mềm trên, chẳng hạn như rủi ro của Excel là dễ bị sai sót khi thực hiện tính toán các số liệu, hệ thống thông tin dữ liệu đôi khi sẽ có bảo mật kém,... Với sự phát triển mạnh mẽ của phần mềm, Excel và Access dường như không còn đáp ứng được yêu cầu cần thiết hay thậm chí đã lỗi thời, vậy nên bạn có thể đề xuất phương án cập nhật các phần mềm quản trị hữu dụng hiện nay mà doanh nghiệp có thể sử dụng, đó là ERF quản lý dữ liệu, MES cho vận hành sản xuất, C-Invoice cho hóa đơn điện tử, CeHuman cho nhân sự hay CeAC cho kế toán,...
Câu 3. Câu lệnh Delete và Truncate trong Database khác nhau như thế nào?
Nhìn chung, Delete là câu lệnh giúp ta xóa các bản ghi nhưng vẫn có thể phục hồi lại nó nếu cần, trong khi đó, Truncate tuy giúp phân bổ các dữ liệu nhưng dữ liệu đó sẽ bị xóa bỏ hoàn toàn ngay sau khi thực hiện lệnh. Tóm lại, tùy theo từng trường hợp mà người sử dụng có thể vận dụng linh hoạt các câu lệnh này.
Câu 4. Làm thế nào để phân biệt Optimistic locking và Pessimistic locking?
Đối với một lập trình viên, đây là hai cơ chế hoàn toàn quen thuộc, không hề lạ lẫm, nhưng để trả lời câu hỏi này, bạn cần nêu ra các điểm khác biệt của mỗi cơ chế. Tuy Pessimistic locking là cơ chế an toàn tuyệt đối nhưng vẫn còn tồn tại một số nhược điểm, còn Optimistic locking có ưu điểm là các giao dịch có thể được phép hoàn thành mà không bị tác động hay ảnh hưởng đến nhau. Nhìn chung, tùy theo mỗi ứng dụng mà sử dụng đồng thời hai cơ chế sao cho hợp lý và dễ dàng nhất.
Câu 5. Bạn đã đọc những gì từ các trang Web hay Blog về ngành?
Đây là câu hỏi được đặt ra để nhà tuyển dụng xem xét mức độ đam mê và nhiệt huyết trong công việc của bạn, đồng thời đánh giá độ nhạy của bạn đối với các công nghệ tiên tiến. Vì vậy, hãy nêu thật thẳng thắn những Blog hay Website mà bạn truy cập thường xuyên để ghi điểm với nhà tuyển dụng nhé!
Câu 6. Anh/Chị có thể sử dụng Tool được Build một cách tự động nào chưa?
Làm việc với các tool được tự động hóa là một kỹ năng bắt buộc phải có của các lập trình viên công nghệ hiện nay, vậy nên hãy nói là bạn có thể. Đây là một sự lựa chọn tuyệt vời vì bạn không cần tốn quá nhiều giai đoạn thủ công để hoàn thiện một sản phẩm phần mềm nào đó.
Câu 7. Bạn có thể làm việc theo mô hình phát triển phần mềm Agile không?
Đây là một câu hỏi có thể đưa bạn vào “bẫy”. Phương pháp Agile là mô hình phương pháp tồn tại lý thuyết, nó cần được đầu tư và tốn khá nhiều công sức phân tích. Nếu bạn chưa thực sự làm việc theo mô hình phát triển Web này thì hãy nói về nhược điểm cũng như tính khả thi của nó bạn nhé!
Câu 8. Trong an ninh mạng, HoneyPot là gì, tại sao chúng lại được sử dụng?
HoneyPot là một hệ thống cho phép người quản trị có thể nghiên cứu, phân tích các hoạt động của kẻ tấn công, giúp phát hiện sớm để ngăn chặn các tấn công mạng từ cả trong và ngoài hệ thống rất hiệu quả. Vậy nên, đây là hệ thống được ưu tiên sử dụng để đảm bảo độ bảo mật cho công việc.
Câu 9. Hãy cho biết Cookie và Session khác nhau ở điểm nào.
Trong các câu hỏi phỏng vấn PHP Developer, đây là câu hỏi cơ bản và điển hình để đánh giá kiến thức của ứng viên. Xét về vị trí lưu, Session lưu trên Server còn Cookie lưu trên trình duyệt của Client, vậy nên tính bảo mật của Session cao hơn.
Câu 10. Phân biệt Abstract class và Interface.
Nếu bạn là lập trình viên C#, đây là câu hỏi phỏng vấn bắt buộc bạn phải nhớ. Cả 2 đều được sử dụng để khai báo các phương thức trừu tượng, trong đó, Abstract class gồm hoạt động cần được thực hiện của các lớp cùng thừa kế một loại tính chất, còn Interface chỉ có 1 đối tượng. Tuy nhiên, chỉ có thể kế thừa 1 Abstract class trong khi lại kế thừa được nhiều Interface.
Câu 11. Làm thế nào để đảm bảo chất lượng source code?
Bạn hãy đề cập các tiêu chí sau đây trong câu trả lời của mình: kiểm thử đơn vị unit test đầy đủ; tránh các mã xấu khi viết code trùng lặp, lỗi trong câu điều kiện, câu so sánh; source code có đang chạy đúng với requirement không; code có được viết đúng style convention không,...
Câu 12. Kể tên công cụ quản lý source code mà bạn thường sử dụng nhất.
Là một Web Developer, bạn thường xuyên phải sử dụng các công cụ quản lý mã nguồn source code, vậy nên bạn hãy nêu ra tối thiểu khái niệm và sự khác nhau của SVN và GIT - hai loại ứng dụng phổ biến nhất dùng trong phát triển phần mềm.
Câu 13. Bạn đã từng sử dụng Visual Studio chưa?
Visual Studio là phần mềm hỗ trợ lập trình C# - ngôn ngữ lập trình cơ bản mà mọi vị trí liên quan đến công nghệ thông tin đều biến đến. Đây là câu hỏi có hoặc không nên bạn chỉ cần trả lời đúng với những gì mà nhà tuyển dụng yêu cầu.
Câu 14. Để đảm bảo chất lượng sản phẩm mà bạn Code ra, bạn cần phải làm gì?
Tuy Code chỉ là một công cụ để bạn lập trình nhưng việc đầu tư để viết ra một đoạn Code hoàn hảo là một việc không hề dễ dàng đối với lập trình viên. Với câu hỏi này, bạn hãy đưa ra các tiêu chí đảm bảo độ chất lượng của sản phẩm, bao gồm mức độ mà nó đáp ứng được các yêu cầu đã nêu ra ban đầu, nó có thể vận hành mượt mà không, có lỗi nào không, lỗi có dễ sửa không, Code có sử dụng lại được không, có thể chuyển đổi sang phần cứng không, có trải nghiệm tốt không,...
Câu 15. Bạn thành thạo công cụ lập trình nào?
Đối với ngành công nghệ thông tin nói chung và lập trình viên nói riêng, những câu hỏi phỏng vấn sẽ được đưa ra dựa trên yêu cầu của công ty cũng như vị trí tuyển dụng. Vì vậy, bạn hãy căn cứ vào bản giới thiệu về công ty cũng như bản mô tả công việc và vị trí ứng tuyển mà lựa chọn công cụ lập trình tương ứng.
Câu 16. Kể tên một số dự án gần đây và vị trí của bạn trong dự án đó.
Các doanh nghiệp, tập đoàn và công ty đều biết rằng các lập trình viên ít hay nhiều kinh nghiệm cũng đều từng có riêng cho mình những dự án cá nhân, đó có thể là dự án bạn tự đề xuất và thực hiện một mình hoặc là dự án nhóm và làm việc chung. Với câu hỏi này, bạn cần trả lời một cách trung thực, nếu nhà tuyển dụng có hứng thú với dự án đó, bạn hãy trình bày chi tiết về dự án (tên dự án, mục đích của dự án, kế hoạch được xây dựng như thế nào, độ thành công của dự án,...) cũng như thành quả bạn thu được sau đó.
Câu 17. Đâu là ngôn ngữ lập trình mà bạn thành thạo nhất?
Bạn có thể đưa ra câu trả lời dựa trên vị trí ứng tuyển. Chẳng hạn, nếu bạn ứng tuyển việc làm Android thì hãy trả lời là Java và Kotlin; còn nếu bạn ứng tuyển front-end thì trả lời là Javascript, css, html.
Câu 18. Bạn sử dụng lại bao nhiêu phần code của mình và sử dụng nó thế nào?
Đây là một câu hỏi yêu cầu tính trung thực khá cao, vì vậy hãy thành thật trả lời dựa trên những gì bạn đã trải nghiệm và dựa trên những dự án bạn đã từng thực hiện.
Câu 19. So sánh hai dịch vụ web REST và SOAP
Sự khác nhau chính giữa SOAP và REST là cách mà Client giao tiếp server, trong đó, giao tiếp server thông qua SOAP sẽ bị hạn chế bởi nhiều quy tắc, format được thiết kế chính xác; còn REST cho phép việc giao tiếp thông qua giao thức HTTP và sẽ bị chi phối bởi ít quy tắc và ít rườm rà hơn.
Câu 20. ETL là gì và khi nào nên sử dụng nó?
ETL là viết tắt của Extract, Transform và Load - đây là mô hình được sử dụng cho dữ liệu on-premises, dữ liệu có cấu trúc và quan hệ. Bạn có thể so sánh với mô hình ETL (Extract, Load và Transform) - mô hình được sử dụng cho các nguồn dữ liệu có cấu trúc và phi cấu trúc trên hệ thống đám mây mở rộng.
Câu hỏi phỏng vấn lập trình viên về ứng xử, kỹ năng mềm
Câu 1. Bạn có khả năng phối hợp với đội Tester không?
Đối với các công ty sản xuất phần mềm, hai vị trí Tester và Developer là rất quan trọng bởi nó đòi hỏi sự phối hợp chặt chẽ giữa hai bộ phận để tạo ra sản phẩm tốt nhất. Vậy nên, bạn cần chuẩn bị cho mình khả năng làm việc nhóm rất cao, trong nhiều trường hợp, Tester có nhiệm vụ thiết kế các trường hợp kiểm thử xoay quanh những yêu cầu của khách hàng để phát hiện ra Bug trong quá trình Code của lập trình viên, lập trình viên có nhiệm vụ nhận lỗi và fix Bug.
Câu 2. Bạn có thể làm thêm giờ (OT) không?
Đây gần như là câu hỏi quen thuộc với dân IT và lập trình viên vì sẽ có nhiều dự án bạn buộc phải đảm bảo tiến độ để hoàn thành deadline. Vậy nên, hãy đưa ra câu trả lời là Có để thể hiện tinh thần làm việc của mình
Câu 3. Bạn có chịu được áp lực không?
Hãy luôn đảm bảo câu trả lời là có, không chỉ riêng gì các công việc thuộc lĩnh vực công nghệ thông tin, mỗi ngành nghề đều có yêu cầu và áp lực riêng, bạn sẽ không thể tồn tại nếu như khả năng chịu áp lực không tốt. Hơn nữa, với vị trí là lập trình viên, yêu cầu về công việc chắc chắn sẽ cao và nặng nề hơn nhiều.
Câu 4. Bạn sẽ phản ứng như thế nào khi Tester báo cáo những Bug vô lý?
Việc các lập trình viên thường xuyên bị các Tester trả lại Bug, vậy nên, khi được báo cáo các Bug vô lý, bạn hãy trả lời nhà tuyển dụng rằng bạn sẽ bình tĩnh xem xét sự việc cũng như phân tích nguyên nhân để có thể từ chối các Bug vô lý đấy một cách hợp lý. Bên cạnh đó, bạn cũng sẽ nói rõ nguyên nhân này với các Tester trên tinh thần hợp tác và làm việc nhóm chứ không tỏ thái độ tư thù, thù hằn cá nhân.
Câu 5. Trong lúc làm việc nhóm, bạn thường là người lắng nghe, người nói, người tranh luận hay người tổng hợp?
Đây là một câu hỏi có thể đánh giá phần nào về con người của bạn, làm việc chung khi họp bàn dự án là một trong những phần rất quan trọng trong quá trình đi làm, vì vậy hãy thể hiện tinh thần thiện chí và hợp tác. Bạn có thể trả lời nhiều hơn một vai trò và hãy luôn đảm bảo mình có thể thực hiện tốt những việc phù hợp với mình.
Câu 6. Bạn làm thế nào để không bị áp lực đè nén quá nặng nề?
Bạn có thể hiểu câu hỏi này theo dạng “Bạn sẽ làm gì để không bị quá áp lực?” vì ai cũng hiểu đây là ngành nghề phải thường xuyên căng thẳng, thường xuyên tăng ca và chịu áp lực rất lớn. Vậy nên, hãy chia sẻ kinh nghiệm cũng như cách bạn vượt qua được áp lực, nhưng hãy nhớ là đừng đưa ra phương án nào quá tiêu cực nhé!
Câu 7. Bạn sẽ xử lý thế nào nếu khách hàng không hiểu rõ công việc nhưng lại đưa ra yêu cầu và mức giá không xứng đáng?
Hãy thể hiện thái độ thiện chí, hòa hoãn và bình tĩnh xử lý tình huống. Bạn có thể đề xuất một vài phương án như bạn sẽ cố gắng giải thích ngắn gọn và dễ hiểu nhất vấn đề đang gặp phải, đưa ra đường hướng phát triển phù hợp hơn với mức giá được trả hoặc đề nghị mức giá xứng đáng hơn với yêu cầu mà khách hàng đặt ra.
Câu 8. Bạn sẽ làm gì nếu chẳng may xảy ra hiểu lầm hoặc to tiếng với đồng nghiệp?
Đây là lúc bạn thể hiện sự bình tĩnh và chuyên nghiệp của mình, đầu tiên bạn sẽ đề xuất việc giải quyết được mâu thuẫn, trong trường hợp không làm được, bạn sẽ phải đưa ra câu trả lời rằng bạn sẵn sàng bỏ qua xích mích để đảm bảo tiến độ công việc, đồng thời chú ý hơn để không xảy ra sự việc như vậy thêm lần nữa.
Câu 9. Nếu bất đồng quan điểm với cấp trên, bạn sẽ xử lý ra sao?
Trong quá trình làm việc, bất đồng quan điểm là việc bạn sẽ không thể tránh khỏi, kể cả người đối diện là trưởng phòng hoặc giám đốc của bạn. Khi này, bạn hãy thể hiện sự linh hoạt trong tâm lý cũng như tạm thời bỏ qua cái tôi của mình mà hoàn thành công việc được giao. Nếu bạn được hỏi tiếp rằng sẽ ra sao nếu bạn không thể giải quyết được mâu thuẫn trong lòng, bạn cũng hãy đưa ra câu trả lời rằng bạn có thể sẽ tiếp tục công việc hoặc rời đi tùy theo tình hình lúc đó.
Câu 10. Bạn mong muốn mức lương bao nhiêu?
Với câu hỏi này, bạn hãy căn cứ trên năng lực và vị trí ứng tuyển để đưa ra một mức giá phù hợp. Trước khi đến buổi phỏng vấn, bạn hãy tham khảo mức lương trung bình cho vị trí mà bạn ứng tuyển để đề xuất một mức lương hợp lý, đừng đề nghị giá quá cao vì bạn sẽ có nguy cơ bị loại, cũng đừng đề nghị giá thấp vì nhà tuyển dụng sẽ cho rằng bạn đang đánh giá thấp khả năng của mình và không có ý định tiến thân.
Câu 11. Bạn kỳ vọng điều gì từ cấp trên của mình?
Bạn có thể trả lời dựa trên mong muốn của mình, chẳng hạn như làm việc với sếp khó tính và cầu toàn nhưng không quá đáng vì đây là người sẽ giúp bạn cải thiện được nhiều thiếu sót trong công việc. Lưu ý đừng đưa ra câu trả lời đại loại như “sao cũng được” vì nó thể hiện bạn không chủ động và không có chính kiến.
Những lưu ý khi phỏng vấn lập trình viên
Chuẩn bị kiến thức chuyên môn
Mỗi nhà tuyển dụng sẽ có cách phát triển công ty riêng vậy nên yêu cầu ứng viên cũng không đồng nhất, bạn sẽ không thể đáp ứng được hết nguyện vọng của công ty. Vậy nên, điều quan trọng nhất bạn cần chuẩn bị trước khi phỏng vấn là kiến thức chuyên môn cơ bản, tùy vào năng lực mà nhà tuyển dụng sẽ đưa ra câu hỏi phù hợp sau đó.
Luyện tập cách trả lời trước tại nhà
lập trình viên là một ngành yêu cầu công việc đặc thù kiến thức chuyên môn, vậy nên số lượng câu hỏi cũng sẽ rất nhiều và rộng. Tuy nhiên, để chắc chắn cho buổi phỏng vấn, bạn có thể tự mình trả lời các câu hỏi cơ bản, thường gặp sẽ được liệt kê ở các phần bên dưới sao cho chỉn chu nhất.
Lập checklist cần thiết cho buổi phỏng vấn
Trước buổi phỏng vấn, bạn nên lập ra danh sách những việc cần làm và những thứ cần mang theo. Trong đó, một trong hai yếu tố quan trọng mà bạn cần đưa ra trong checklist của mình là bản in sơ yếu lý lịch cũng như CV - hãy chú ý chuẩn bị số lượng lớn vì bạn không dự trù được có bao nhiêu người sẽ phỏng vấn mình. Yếu tố còn lại là bản in của bản mô tả công việc của nhân viên it (Job Description - JD) và bản in các thông tin về công ty, bạn sẽ có thể ghi điểm với nhà tuyển dụng vì họ biết bạn có quan tâm và tìm hiểu kỹ công việc cũng như nơi bạn sẽ làm việc.
Đến buổi phỏng vấn sớm, nắm bắt thời gian
Điều đặc biệt quan trọng khi đi phỏng vấn chính là không được đến muộn, nhưng cũng không được đến quá sớm. Để dự trù các sự cố có thể xảy ra như kẹt xe hay lỗi kỹ thuật về hồ sơ, bạn có thể đến trước thời gian phỏng vấn từ 10 - 15 phút, nhưng lưu ý không đến sớm hơn 15 phút vì có thể bạn sẽ bắt gặp nhà tuyển dụng còn đang chuẩn bị cho buổi phỏng vấn, đa phần họ sẽ không thích ứng viên nhìn thấy cảnh tượng đó.
Ngừng kiểm tra email, mạng xã hội
Việc không ngừng nhìn vào điện thoại, bất kể bạn đang làm gì cũng sẽ không gây ấn tượng tốt với nhà tuyển dụng, hơn nữa, đây là hành động thể hiện sự lo lắng và bất an của bạn. Hãy ngừng kiểm tra email, mạng xã hội và hãy quan sát xung quanh mình, rất có thể bạn sẽ được nhận việc thông qua óc quan sát và khả năng chú tâm vào thế giới thực.
Trang phục phù hợp, chỉn chu
Hãy chuẩn bị trang phục phù hợp cho buổi phỏng vấn. Không nên mang những trang phục quá thoải mái như áo phông, quần lửng hay váy quá ngắn. Bạn cũng không cần phải chuẩn bị áo sơ mi trắng kèm quần tây, nhưng làm sao vẫn đảm bảo trang phục lịch sự, chuẩn mực, gọn gàng và không phản cảm.
Câu hỏi phỏng vấn
Làm thế nào bạn xử lý lỗi và vấn đề kỹ thuật trong quá trình phát triển phần mềm? Hãy chia sẻ một trường hợp bạn đã gặp vấn đề và cách bạn đã giải quyết nó.
↳
Khi đối mặt với lỗi và vấn đề kỹ thuật trong quá trình phát triển phần mềm, tôi thường tuân theo một quy trình cụ thể. Đầu tiên, tôi sẽ cố gắng xác định nguyên nhân cụ thể của lỗi bằng cách sử dụng các công cụ kiểm tra và ghi lại các thông tin liên quan. Sau đó, tôi sẽ tạo một kế hoạch để giải quyết vấn đề, ưu tiên nó dựa trên mức độ ảnh hưởng và tiêu chí quan trọng. Tôi thường tìm kiếm tài liệu, tra cứu trực tuyến và thảo luận với đồng nghiệp để tìm giải pháp tốt nhất. Một trường hợp cụ thể mà tôi gặp phải là khi phải xử lý một lỗi bất thường trong mã nguồn, và sau khi kiểm tra, tôi nhận ra rằng nguyên nhân là do một biến được gán sai giá trị. Tôi đã sửa lỗi này và thực hiện kiểm thử kỹ thuật để đảm bảo rằng vấn đề đã được khắc phục một cách toàn diện. Trong quá trình này, tôi đã học được cách quản lý áp lực và hợp tác với đồng nghiệp để nhanh chóng tìm ra giải pháp hiệu quả cho vấn đề kỹ thuật.
Bạn có thể làm được gì cho chúng tôi với vị trí Lập trình viên (Developer)?
Các thành tích đã đạt được với vị trí Lập trình viên (Developer)?
Tại sao chúng tôi nên tuyển bạn với vị trí Lập trình viên (Developer)?
Tại sao bạn lại ứng tuyển với vị trí Lập trình viên (Developer)?
Khả năng chịu áp lực trong công việc với vị trí Lập trình viên (Developer)?
Bạn dự định làm cho công ty trong bao lâu với vị trí Lập trình viên (Developer)?
Mong đợi của bạn khi ứng tuyển với vị trí Lập trình viên (Developer)?
Điểm mạnh của bạn với vị trí Lập trình viên (Developer)?