Thử thách bài test đầu vào – Liệu bạn đã sẵn sàng?
Nghe thì đã sợ, đó là cảm giác ám ảnh suốt một khoảng thời gian dài đúng không nào? Tuy nhiên, bạn đừng lo, bài test đầu vào của một công ty IT nhằm đánh giá tổng quát những kiến thức cơ bản của bạn về vị trí ứng tuyển. Vì thế, bạn nên thoải mái, giữ một tinh thần tốt để sẵn sàng hoàn thành bài thi bất cứ lúc nào nhé.
Cụ thể trong bài test đầu tiên, bạn cần thể hiện mình có những am hiểu cơ bản về chuyên môn lập trình, tư duy logic và khả năng về ngoại ngữ. Trong đó, bài thi về chuyên môn lập trình bao gồm bộ câu hỏi trắc nghiệm nhằm giúp bạn hệ thống lại các kiến thức xoay quanh nền tảng lập trình (Java core), web (HTML, CSS, JS), database. Chung quy lại, việc kiểm tra năng lực của bạn sẽ đi từ việc khai thác kiến thức Front-end đến Back-end và Database.
Quan trọng nhất – Vòng phỏng vấn trực tiếp
Đây có thể nói là vòng quan trọng nhất bởi bạn sẽ được phỏng vấn trực tiếp bởi đội ngũ chuyên môn đến từ các Team Leader tại công ty. Thông thường, các bạn sẽ được hỏi các kiến thức từ cơ bản đến nâng cao. Sau đây, mình sẽ đưa ra danh sách các câu hỏi được phân loại tương ứng từng loại kiến thức chuyên môn. Đây là sườn những vấn đề và câu hỏi thường được nhà tuyển dụng hỏi để đánh giá năng lực và tiềm năng phát triển của ứng viên.
1. Câu hỏi cá nhân:
- Giới thiệu bản thân: Bạn cũng có thể nói sơ về số năm kinh nghiệm, sở thích về công nghệ, vị trí và dự định muốn làm (Dành cho khoảng này 2-3 phút thôi nhé)
- Hãy nói về 1 project bạn đã làm? Bạn làm vai trò gì?: Người phỏng vấn sẽ hỏi khá sâu về cấu trúc project, những việc đã bạn làm, kể cả những khó khăn bạn gặp phải và kèm theo cách xử lý và vượt qua nó. Chính quá trình xử lý vấn đề họ sẽ đánh giá được nhiều điều từ bạn qua câu hỏi này.
2. Câu hỏi về chuyên môn:
Bộ câu hỏi tổng hợp được chia nhỏ theo nhiều skill, hãy chuẩn bị kỹ lưỡng trước càng sâu các skill trong chuyên môn và những gì bạn đã đề trong CV. Bạn sẽ được hỏi đầy đủ từ backend, đến frontend và cả một số các framework liên quan. Ngoài lý thuyết, bạn có thể còn được hỏi cách giải quyết 1 vấn đề cụ thể nào đấy, hãy chuẩn bị kỹ lưỡng nhé!
Kiến thức Java nền tảng
- Thế nào là lập trình đối tượng? Cho biết các tính chất đặc thù của lập trình hướng đối tượng?
- Sự khác nhau giữa While và doWhile?
- Cách tổ chức hoạt động của các Collection Framework như List , Map, Set, Queue, Stack,..?
- Phân biệt ArrayList , Linkedlist và Vector?
- Sự khác nhau giữa ArrayList – Array, Linkedlist – Arraylist, Set – List, Override – Overload?
- Khái niệm về Generic? Cho ví dụ và lý do sử dụng?
- Sự khác nhau giữa Abstract class và Interface?
- Khái niệm tham trị và tham chiếu?
- Ngoại lệ (Exception là gì)? Phân biệt Check và Uncheck exception?
- Thuật toán tìm kiếm nhị phân và thuật toán sắp xếp?
Một số câu hỏi về Git cần biết
- Git fork là gì? Sự khác nhau giữa git fork, branch và clone?
- Sự khác nhau giữa pull request và branch?
- Làm thế nào để revert previous commit trong git?
- Giải thích những ưu điểm of Forking Workflow?
- Sự khác nhau giữa HEAD, working tree và index?
- Trình bày quy trình làm việc của Gitflow Workflow?
- Khi nào nên sử dụng git stash?
- Làm thế nào để loại bỏ một tập tin từ git mà không cần loại bỏ nó khỏi file system của bạn?
- Khi nào nên sử dụng git rebase thay vì git merge?
Kiến thức về Framework (ví dụ như Spring Framework của Java)
- Mô hình MVC là gì? Mô tả luồng đi của một ứng dụng MVC?
- Các khái niệm về Dependency Injection, JPA, ORM mapping, Webservice?
- Giải thích các annotation @Controller , @Service , @Repository , @Autowire?
- Chức năng hoạt động của Maven?
- Sự khác nhau của Session và Cookie?
- Làm thế nào để bảo mật trong lập trình?
Kiến thức về Database
- Khái niệm Database? Các quan hệ trong database? Các loại Join trong database?
- Các khái niệm về Composite key, Transaction, Unique?
- Khoá chính – khóa ngoại là gì?
- Giải thích các Rule chuẩn hóa dữ liệu?
- Sự khác nhau Truncate, Delete , Drop?
- Sự khác nhau Having và Where?
Một số câu hỏi về Front-end
- HTML, CSS, Bootstrap dùng để làm gì ?
- Phân biệt Class và Id? Phân biệt
- Phân biệt các thuộc tính Position: Absolute, Fixed, Relative, Fixed, Static
- Khai báo <!DOCTYPE> trong HTML có tác dụng gì?
- Phân biệt Class vs ID như thế nào trong CSS?
- Phân biệt toán tử “==” và “===” trong Javascript?
- “this” trong Javascript dùng để làm gì?
- Đánh lừa bằng cách đặt tên function trùng với một function có sẵn của thư viện
3. Câu hỏi đánh giá về khả năng tiếp thu kiến thức
Câu hỏi này như một thách thức thêm để đánh giá mức độ cập nhật các xu hướng công nghệ mới của từng ứng viên.
Đây không phải là kết luận cuối cùng cho kết quả tuyển dụng ứng viên, chỉ là xác lập thêm tiêu chí ứng viên đó có khả năng tự tìm hiểu về lĩnh vực mình theo đuổi hay không. Đó là điểm cộng lớn cho các ứng viên.
Cuối buổi phỏng vấn – Đặt câu hỏi
Bạn sẽ được hỏi rằng “Có câu hỏi gì muốn đặt cho công ty không?”. Đây cũng là cách mà nhà tuyển dụng nhìn nhận về thái độ cũng như tính cách của bạn.
Đừng ngại mà hỏi các câu hỏi như: Môi trường làm việc ra sao, có yêu cầu OT hay không? Chính sách review tăng lương tăng thưởng thế nào? Công ty có tổ chức seminar hay chính sách gì để giúp nhân viên phát triển không?. Những câu hỏi này sẽ thể hiện bạn có tinh thần làm việc nghiêm túc, biết suy nghĩ đến tương lai.
Hãy nhớ rằng, sau buổi phỏng vấn, nhớ gửi một email cảm ơn cho người đã phỏng vấn mình. Đây là một điều nho nhỏ, hiệu quả lại lơn lớn mà các bạn thường “quên” không làm.
Trích: TopDev – Trang tuyển dụng CNTT hàng đầu Việt Nam