Bạn đang chuẩn bị tham gia buổi phỏng vấn Java thì việc chuẩn bị những câu hỏi phỏng vấn Java là vô cùng cần thiết. Vì thế, JobsGO đã tổng hợp bộ câu hỏi phỏng vấn Java chuẩn nhất năm 2023 để các bạn có được buổi Interview thành công nhất.
1. Những câu hỏi phỏng vấn Fresher Java
Câu 1: Java được phát triển bởi đơn vị nào?
Java được phát triển bởi đơn vị nào thường là câu hỏi phổ biến dành cho thực tập, thông qua đó nhà tuyển dụng có thể đánh giá sơ bộ về mức độ hiểu biết của bạn về loại ngôn ngữ lập trình này.
Trả lời: Java là ngôn ngữ lập trình phổ biến thế giới được phát triển bởi Sun Microsystems. Java được ra mắt và công bố năm 1995.
Câu 2: Java đang hỗ trợ trên những nền tảng nào?
Trả lời: Java có thể chạy trên rất nhiều nền tảng khác nhau như Mac OS, Linux, Windows, Sun Solaris, HP - Unix,…
Câu 3: Java và Java Core là gì?
Trả lời: Java là ngôn ngữ lập trình cấp cao có mục đích chung dựa trên các khái niệm của ngôn ngữ lập trình hướng đối tượng cấp cao, cú pháp nó sử dụng hầu hết là của c và c++ .
Còn Java Core là 1 phần của Java để phát triển mã khả chuyển cho những ứng dụng desktop và môi trường máy chủ.
Câu 4: Classloader trong Java là gì?
Trả lời: Classloader là một hệ thống con của Java Virtual Machine. Nó được sử dụng để tải các lớp và các interface. Hiện nay, có rất nhiều loại Classloader như: Bootstrap classloader, System classloader, Extension classloader…
Câu 5: File có tên trống “.java” có hợp lệ không?
Trả lời: File này vẫn hợp lệ. Người dùng hoàn toàn có thể lưu file với tên “.java”. Tuy nhiên, sau đó, người dùng cần biên dịch bằng lệnh javac .java và chạy bằng lệnh java ten_lop.
Câu 6: Platform là gì?
Trả lời: Platform được hiểu là mọi môi trường phần mềm, phần cứng có chứa một chương trình chạy. Chẳng hạn, với môi trường runtime riêng cho mình (JRE) và API, Java được gọi là Platform.
Câu 7: Những đặc điểm mà Java fresher nên biết về Java là gì?
Trả lời: Java có 5 đặc điểm quan trọng mà lập trình viên java fresher nên biết là: hướng đối tượng, thông dịch, đa luồng, độc lập nền tảng và tính mạnh mẽ.
Câu 8: Checked Exception là gì?
Trả lời: Checked Exception trong Java là các loại exception mà trình biên dịch yêu cầu lập trình viên phải xử lý hoặc khai báo bên trong khối mã, để đảm bảo việc xử lý exception được quyết định rõ ràng. Khi sử dụng các phương thức hoặc khối mã ném ra Checked Exception, lập trình viên buộc phải sử dụng khối try-catch hoặc khai báo sử dụng từ khóa throws để xử lý ngoại lệ này.
2. Những câu hỏi phỏng vấn Java Collection
Câu 1: Cho biết các interface cơ bản của Java Collections framework?
Trả lời: Java Collections Framework cung cấp 1 tập hợp classes và interface được thiết kế nhằm hỗ trợ các hoạt động trên tập hợp các objects. Và các interface cơ bản trong Java Collections Framework là:
- Collection interface
- Set interface
- List interface
- Queue interface
- Map interface
Câu 2: Iterator là gì trong Java Collection?
Trả lời: Iterator trong Java Collection là giao diện được sử dụng để thay thế Enumerations, và các bạn có thể sử dụng iterator để xóa phần tử khi lặp 1 collection, hoặc duyệt các phần tử từ đầu đến cuối của collection.
Câu 3: Giải thích sự khác nhau giữa ListIterator và Iterator?
Trả lời:
- Một Iterator có thể sử dụng để duyệt các List và Set collections; nhưng ListIterator chỉ có thể sử dụng để lặp lại List.
- List triển khai Iterator interface và có chứa các chức năng bổ sung như thay thế phần tử, thêm phần tử, lấy vị trí index của các phần tử trước/ sau.
- List có thể duyệt collection theo 2 hướng, còn Iterator chỉ duyệt 1 collection theo hướng chuyển tiếp.
Câu 4: Sự khác nhau giữa ArrayList và LinkedList là gì?
Trả lời: | ArrayList | LinkedList | |---|---| | Sử dụng một mảng động | Sử dụng danh sách liên kết doubly | | Cần nhiều chuyển đổi, không hiệu quả với thao tác | Rất hiệu quả cho thao tác | | Rất tốt cho việc lưu trữ và lấy dữ liệu | Rất tốt cho việc thao tác dữ liệu |
Câu 5: Phương thức hashCode() là gì?
Trả lời:
- Phương thức hashCode() trả về một giá trị mã băm (một số nguyên).
- Nếu 2 keys giống nhau, phương thức hashCode() sẽ trả về cùng số nguyên.
- Tuy nhiên, hai mã băm có thể có các keys giống hoặc khác nhau.
Câu 6: Lợi thế của Properties file là gì?
Trả lời: Trong trường hợp bạn thay đổi giá trị trong tệp thuộc tính, bạn không cần phải biên dịch lại lớp java. Vì vậy, Properties file hỗ trợ người dùng có thể quản lý ứng dụng dễ dàng hơn.
Câu 7: Tại sao chúng ta phải ghi đè phương thức equals()?
Trả lời: Chúng ta phải ghi đè phương thức equals() trong Java để tùy chỉnh cách so sánh hai đối tượng của lớp mà chúng ta định nghĩa. Phương thức equals() mặc định trong lớp Object so sánh hai đối tượng bằng cách kiểm tra xem chúng có tham chiếu đến cùng một vị trí bộ nhớ hay không. Tuy nhiên, đôi khi chúng ta muốn so sánh dựa trên nội dung của đối tượng, không chỉ dựa trên tham chiếu. Bằng cách ghi đè phương thức equals(), chúng ta có thể tự định nghĩa cách thức so sánh nội dung của hai đối tượng theo quy tắc của chúng ta.
Câu 8: Hash-collision trong Hashtable là gì? Và nó được xử lý như thế nào?
Trả lời: Hash-collision trong Hashtable xảy ra khi hai hoặc nhiều khóa khác nhau được ánh xạ vào cùng một vị trí bộ nhớ. Hashtable giải quyết vấn đề này bằng cách sử dụng chaining, tức là lưu các khóa và giá trị tại cùng một vị trí trong một danh sách liên kết.
3. Những câu hỏi phỏng vấn JavaScript
JavaScript đang trở thành một trong những loại ngôn ngữ lập trình phổ biến nhất thế giới. Do đó, trước khi đi phỏng vấn bạn cần chuẩn bị thật kỹ câu trả lời cho câu hỏi phỏng vấn JavaScript.
Câu 1: Prototypal inheritance và classical inheritance trong JavaScript là gì?
Trả lời:
- Prototypal inheritance là sự kế thừa nguyên mẫu, các phiên bản của prototypal inheritance có thể được tạo ra từ nhiều đối tượng khác nhau, đặc biệt nó còn cho phép việc kế thừa có chọn lọc.
- Class Inheritance là tính kế thừa lớp, cho phép xây dựng lớp mới trên các định nghĩa của lớp có sẵn. Nghĩa là, lớp cha sẽ chia sẻ phương thức, dữ liệu cho lớp con.
Câu 2: Lập trình không đồng bộ trong JavaScript là gì?
Trả lời: Là việc loại bỏ lệnh, điều kiện gọi hàm, mã được thực hiện theo trình tự từ trên xuống dưới, đồng thời ngăn chặn các tác vụ chạy dài.
Câu 3: Functional programming là gì?
Trả lời: Functional programming là dạng mô hình lập trình trên hàm toán học nhằm tránh thay đổi của giá trị dữ liệu; và tối đa hóa khả năng tái sử dụng trong chương trình.
Câu 4: Có bao nhiêu kiểu dữ liệu trong JavaScript?
Trả lời: JavaScript có 6 kiểu dữ liệu, cụ thể là:
- String
- Number
- Object
- Undefined
- Boolean
- Array
- Null
Câu 5: Phân biệt var, let và const?
Trả lời: Sự khác nhau giữa var, let và const là:
- const: là hằng số. Đây là giá trị không đổi trong suốt quá trình chạy.
- let: tạo ra một biến mà biến này chỉ có thể truy cập được trong block bao quanh nó.
- var: tạo ra một biến có thể truy cập xuyên suốt function chứa nó.
Câu 6: Strict mode trong javascript là gì?
Trả lời: Strict Mode được hiểu là một mẫu nghiêm khắc trong Javascript. Tức là, so với việc viết code bình thường (Normal Mode), sử dụng Strict Mode sẽ cần tuân thủ thêm một số quy định khác.
Câu 7: Anonymous function là gì?
Trả lời: Anonymous function (hàm vô danh) trong Java là một hàm không có tên được định nghĩa và sử dụng ngay tại chỗ mà không cần phải khai báo trong một lớp riêng. Nó cung cấp một cách tiện lợi để triển khai các phương thức nhanh chóng và trực tiếp trong một đoạn mã, thường được sử dụng trong ngữ cảnh của các giao diện hàm (functional interfaces) hoặc khi cần triển khai các đoạn mã ngắn và đơn giản.
Câu 8: Hàm Array.splice() và hàm Array.slice() khác nhau như thế nào?
Trả lời: Array.splice() được sử dụng để thay đổi mảng ban đầu bằng cách chèn hoặc xóa phần tử, còn Array.slice() tạo ra một bản sao của mảng ban đầu bằng cách trích xuất một phần tử con.
4. Những câu hỏi phỏng vấn Java Spring
Câu 1: Thế nào Spring trong Java?
Trả lời: Spring trong Java là khung Framework có mã nguồn mở và Spring được thiết kế để lập trình Java tạo ra những ứng dụng website bất kỳ.
Câu 2: Hiện nay Java Spring có bao nhiêu phiên bản?
Trả lời: Java Spring có 3 phiên bản phổ biến là Spring 4.0, Spring 3.0, Spring 2.5. Ngoài ra, nếu nhà tuyển dụng hỏi về 1 phiên bản cụ thể thì bạn mới trả lời chi tiết, tránh trả lời dài dòng, mất thời gian của 2 bên.
Câu 3: Spring Boot là gì?
Trả lời: Java Spring Boot là phiên bản trong Spring, nó giúp cho các ứng dụng được tạo ra có quy trình sắp xếp dữ liệu hợp lý hơn. Đặc biệt, Spring Boot còn có tính năng loại bỏ nhu cầu xác định cấu hình bản mẫu.
Câu 4: Lợi thế của Java Spring là gì?
Trả lời: Đây là câu hỏi phỏng vấn Java có tính chất khá chủ quan, nó dựa trên quan điểm mỗi người khi sử dụng để lập trình. Các bạn có thể trả lời lợi thế của Java Spring là sử dụng dễ dàng, mã nguồn mở, dễ kiểm tra và có các mẫu sẵn,…
Câu 5: Spring có bao nhiêu module khác nhau?
Trả lời: Đây là một trong những câu hỏi phỏng vấn Java Spring thường gặp. Bạn có thể trả lời là Java Spring có khoảng 20 modun và nó được phân chia thành các vùng chứa riêng biệt như Web, Test, Core, Data Access Container,…
Câu 6: IOC là gì?
Trả lời: IOC là tên viết tắt của cụm từ Inversion of Control. Có thể hiểu, nó là Core Container của Java Spring. IOC quản lý và định cấu hình các ứng dụng tích hợp khác nhau thông qua phép Dependency Injection để. Java Spring hiện có 2 loại IOC là ApplicationContext và BeanFactory.
Câu 7: Có bao nhiêu cách để thực hiện Dependency Injection?
Trả lời: Dependency có thể được thực hiện bằng 3 cách sau:
- Sử dụng Constructor Injection
- Sử dụng Setter Injection
- Sử dụng Interface Injection
Trong đó, Constructor và Setter Injection được sử dụng nhiều nhất trong Spring framework.
Câu 8: XML file là gì?
Trả lời: XML là một tệp cấu hình Spring. Tất cả thông tin về các loại lớp khác nhau cũng như mối tương quan của chúng đều được chứa trong XML file.
5. Những câu hỏi phỏng vấn hướng đối tượng OOP
Câu 1: Lập trình hướng đối tượng OOP gồm những gì?
Trả lời: Bạn có thể trả lời một cách đơn giản là lập trình hướng đối tượng bao gồm Composition, Association, Encapsulation, Aggregation, Inheritance, Abstraction,…
Câu 2: Đa hình là gì? Có mấy loại đa hình?
Trả lời: Đa hình là khả năng định nghĩa phương thức tại giai đoạn runtime; và có 2 loại đa hình phổ biến là Overriding và Overloading:
- Overloading: Là đa hình trong thời gian biên dịch, là kỹ thuật cho phép trong cùng 1 class sẽ có thể có nhiều phương thức cùng tên nhưng sẽ khác nhau về kiểu dữ liệu hoặc số lượng tham số.
- Overriding: Là đa hình trong thời gian chạy, nó được sử dụng trong trường hợp lớp con kế thừa từ lớp cha, định nghĩa lại phương thức có mặt ở lớp cha.
Câu 3: Java 8 có những tính năng quan trọng nào?
Trả lời: Những tính năng quan trọng trong Java 8 có thể kể đến là: Biểu thức Lambda; phương thức forEach; Java time API; Stream API; Static và method; cải tiến Core API, Java IO, Collection API, Concurrency API,…
Câu 4: Các tính chất của hướng đối tượng là gì?
Trả lời: Lập trình hướng đối tượng bao gồm 4 tính chất sau:
- Tính đóng gói
- Tính kế thừa
- Tính trừu tượng
- Tính đa hình
Câu 5: Có mấy loại access modifier? Phân biệt sự khác nhau giữa chúng?
Trả lời: Có 4 loại Access Modifier và mỗi loại có những tính năng khác nhau:
- Private: Chỉ cho phép người dùng truy cập trong cùng class.
- Default: Người dùng có thể truy cập trong cùng class và package.
- Protected: Có thể truy cập trong cùng class, package và ngoài package bởi lớp con.
- Public: Cho phép người dùng truy cập ở mọi nơi.
Câu 6: Interface có thể là final không?
Trả lời: Interface không thể là final vì cần phải có một lớp implement interface thì mới sử dụng được.
Câu 7: Thế nào là tính đóng gói?
Trả lời: Tính đóng gói (encapsulation) trong lập trình là một nguyên tắc thiết kế cho phép ẩn thông tin và giới hạn truy cập trực tiếp vào các thành phần dữ liệu và phương thức của một đối tượng. Nó đảm bảo rằng dữ liệu và hành vi của đối tượng chỉ có thể được truy cập thông qua các phương thức công khai (public methods) được định nghĩa, từ đó đảm bảo tính riêng tư và kiểm soát hợp lý trong việc sử dụng và thay đổi dữ liệu.
Câu 8: Có bắt buộc phải khai báo constructor trong lớp?
Trả lời: Không bắt buộc phải khai báo constructor trong một lớp. Nếu lớp không có constructor được khai báo, Java sẽ tự động tạo một constructor mặc định (default constructor) không có tham số. Tuy nhiên, khi lớp có nhu cầu thiết lập các giá trị ban đầu cho các thuộc tính của nó hoặc cần thực hiện các thao tác khác trong quá trình khởi tạo, lập trình viên có thể tự định nghĩa constructor để đáp ứng các yêu cầu cụ thể của lớp.
Trên đây JobsGO đã chia sẻ với bạn đọc bộ những câu hỏi phỏng vấn Java thường gặp. Hãy nhớ rằng, trong quá trình phỏng vấn bạn chỉ cần trả lời đúng trọng tâm và bám sát vào câu hỏi là có thể chinh phục được các nhà tuyển dụng.
Chia sẻ bài viết này trên: Facebook | Twitter | LinkedIn
Tìm việc làm ngay!
(Theo JobsGO - Nền tảng tìm việc làm, tuyển dụng, tạo CV xin việc)