logo

Đang load dữ liệu

logo devmaster

VIỆN CÔNG NGHỆ VÀ ĐÀO TẠO DEVMASTER

Đào tạo - Phần mềm - Cho thuê nhân sự

  • 0969.609.003
  • 0978.611.889
  • Trang chủ
  • Các khoá đào tạo
    • Chuyên đề WEB - PHP

      • Lập trình web với HTML5 - CSS3- JQuery - Bootstrap - Ajax - [36 giờ]
      • Lập trình web frontend - reactjs - [75 giờ]
      • Lập trình web với mã nguồn mở PHP&MYSQL - PHP FRAMEWORK [126 giờ]

      Chuyên đề Mobile

      • Lập trình Games/Apps trên nền tảng Android - [120 giờ]
      • Lập trình Games/Apps trên nền tảng IOS - [120 giờ]

      Chuyên đề JAVA

      • Ngôn ngữ lập trình hướng đối tượng với java - [40 giờ]
      • Lập trình ứng dụng với java - [100 giờ]
      • Lập trình web site với java framework (JPA, HIBERNATE, SPRING MVC, SPRINGBOOT) - [276 giờ]

      Chuyên đề NETWORK/SECURITY

      • Khoá học Quản trị hạ tầng mạng CCNA v6 - [72 giờ]
      • Khoá học quản trị hệ thống với Windows SERVER 2012- [72 giờ]
      • Chuyên gia bảo mật hệ thống CompTIA + - [110 giờ]

      Chuyên đề .NET

      • Nền tảng lập trình hướng đối tượng với C# - [40 giờ]
      • Lập trình ứng dụng WINDOWS FORM - [100 giờ]
      • Lập trình Web với ASP.NET MVC 5, WebAPI - [145 giờ]

      Chuyên đề khác

      • Ngôn ngũ lập trình C/C++ - [80 giờ]
  • Lập trình cho trẻ em
  • Dịch vụ
    • Đào tạo theo như cầu
    • Cung cấp thiết bị - Phần mềm
    • Tư vấn - Thiết kế mạng hạ tầng
    • Tư vấn - Triển khai dịch vụ mạng
    • Tư vấn - Tư vấn, triển khai giám sát hệ thống
    • Thực tập dự án
  • Lịch khai giảng
  • Tin tức
    • Tin tức và sự kiện
    • Tin hoạt động
    • Tin công nghệ
    • Hội thảo, workshop, Codecam
    • Thông tin việc làm
    • Cẩm nang chia sẻ kiến thức
  • Tiện ích
  • Liên hệ

Tin công nghệ

Aug - 2018

29

Top 10 câu hỏi phỏng vấn Java thường gặp

Tin công nghệ

Top 10 câu hỏi phỏng vấn Java thường gặp

 

Gần đây, tôi có ý tưởng muốn chia sẻ kinh nghiệm với tất cả các bạn, những người đang gặp khó khăn trong việc tìm kiếm công việc lập trình về Java. Tôi hy vọng rằng mình có thể giúp đỡ bằng cách chia sẻ 10 câu hỏi Java thường gặp khi đi phỏng vấn

1. Trên thang điểm 10 – Bạn đánh giá mình được bao nhiêu điểm?

Đây là một điều rất khó nếu bạn không chắc chắn về bản thân hoặc trình độ thông thạo của bạn trong Java. Hãy hạ thấp số điểm của bạn xuống một chút. Sau này, bạn có thể sẽ nhận được câu hỏi theo mức độ bạn tự đánh giá. Do đó, bạn sẽ tránh được những câu hỏi quá khó mà rất có thể sẽ không thể trả lời được.

 

2. Bạn biết về những loại Collection nào?

Ở đây bạn nên biết về những cái quan trọng nhất:

  • ArrayList
  • LinkedList
  • HashMap
  • HashSet

Hãy tìm hiểu về các collection này càng nhiều càng tốt, bởi vì bạn sẽ bị hỏi nhiều câu hỏi về chúng

3. Liệt kê 5 đặc điểm bất kỳ của Java?

Một số đặc điểm của Java là Hướng đối tượng, Độc lập nền tảng, Thông dịch, Đa luồng (Multi-thread), Robust (mạnh mẽ), Portable (khả chuyển).

4. Object Class có những Method nào?

Đây là một câu hỏi rất phổ biến được yêu cầu để xác định mức độ nắm vững của bạn với các khái niệm cơ bản. Đây là những method mà mọi object đều có:

 Object class, trong  java.lang  package, được xếp hạng gần như top thứ hạng trong class. Mỗi class sẽ là một hậu duệ, trực tiếp hoặc gián tiếp, của  Object class. Mỗi class bạn sử dụng hoặc kế thừa các instance method của  Object. Bạn vốn không cần sử dụng bất kỳ phương pháp nào trong số này, nhưng nếu bạn chọn làm như vậy thì sẽ cần ghi đè chúng bằng các code cụ thể cho class của bạn. Các phương thức được kế thừa từ  Object.được thảo luận trong phần này là:

  • protected Object clone() throws CloneNotSupportedException
     Tạo và trả về một bản sao của object này.
  • public boolean equals(Object obj)
      Cho biết một số object khác có “bằng” với object này hay không
  • protected void finalize() throws Throwable

Được gọi bởi garbage collector trên một object khi  garbagecollection  xác định rằng không có thêm reference đến object.

  • public final Class getClass()
    Returns the runtime class của 1 object.
  • public int hashCode()
    Return một giá trị hash code value cho object
  • public String toString()

 Return một chuỗi đại diện của object.

Các phương thức  notify, notifyAll,và  wait của Object đều đóng vai trò đồng bộ hóa các hoạt động của các luồng chạy độc lập của thread trong một chương trình. Có năm method sau:

  • public final void notify()
  • public final void notifyAll()
  • public final void wait()
  • public final void wait(long timeout)
  • public final void wait(long timeout, int nanos)

 

5. Tại sao String Object không thể thay đổi (Immutable) trong Java?

  1. String pool  là có thể bởi vì String là bất biến trong Java. Bằng cách này, Java Runtime tiết kiệm rất nhiều khoảng trống trong Java heap space, bởi vì các String variable khác nhau có thể tham chiếu đến cùng một biến String variable trong string pool. Nếu String không phải là bất biến, thì việc thực hiện chuỗi sẽ không diễn ra được, bởi vì nếu bất kỳ variable nào thay đổi giá trị, nó sẽ cũng gây ảnh hưởng lên các variable khác.
  2. Nếu String không phải là bất biến, thì nó sẽ gây ra một mối đe dọa bảo mật nghiêm trọng cho ứng dụng. Ví dụ, tên người dùng và mật khẩu cơ sở dữ liệu được chuyển thành String để có được kết nối cơ sở dữ liệu, máy chủ lập trình trong socket và các chi tiết của portal được chuyển thành String. Vì Chuỗi không thể thay đổi nên không thể thay đổi các giá trị này. Nếu không, bất kỳ tin tặc nào cũng có thể thay đổi giá trị được tham chiếu để gây ra các vấn đề bảo mật trong ứng dụng.
  3. Vì String là bất biến, nó cũng an toàn cho multithreading, và một cá thể String đơn có thể được chia sẻ qua các thread khác nhau. Điều này giúp tránh việc sử dụng đồng bộ hóa cho thread safety.
  4. Các chuỗi được sử dụng trong  Java classloader, và tính bất biến bảo đảm rằng class đúng sẽ được load bởi Classloader..
  5. Vì String là bất biến, nên hashcode của nó được lưu vào bộ nhớ cache tại thời điểm tạo và không cần phải tính lại. Điều này làm cho nó trở thành một ứng cử viên tuyệt vời để làm key trong map, và quá trình xử lý của nó cũng nhanh hơn các  HashMap key object khác. Đây là lý do tại sao String là object được sử dụng nhiều nhất của các  HashMap key

6. Sự khác biệt giữa Final, Finally, và Finalize là gì?

Đây là câu hỏi yêu thích của tôi.

final keyword được sử dụng trong một số ngữ cảnh để xác định một thực thể chỉ có thể được gán một lần.

The Java finally block là một khối được sử dụng để thực thi mã quan trọng, chẳng hạn như đóng kết nối, luồng, vv The Java  finally  block luôn được thực thi, cho dù là có ngoại lệ hay không.

Đây là một method mà GarbageCollector luôn gọi ngay trước khi xóa / hủy object, nó đủ điều kiện để Garbage Collection thực hiện hoạt động dọn dẹp.

7. Vấn đề Diamond Problem là gì?

Vấn đề Diamond Problem phản ánh tại sao chúng ta không được phép làm nhiều inheritance trong Java. Nếu hai class có cùng một superclass được chia sẻ với một phương thức cụ thể, nó sẽ ghi đè lên cả hai lớp con. Sau đó, nếu bạn quyết định kế thừa từ hai  subClasses đó, thì ngôn ngữ đó không thể quyết định cái nào bạn muốn gọi.

Chúng tôi gọi vấn đề này là Diamond Problem. Nó được đặt tên từ hình trên.

8. Làm thế nào bạn có thể làm cho một class không thể thay đổi?

Tôi nghĩ đây là một câu hỏi khá khó. Bạn cần phải thực hiện một số sửa đổi trên class của mình để đạt được tính không thay đổi:

  •    Khai báo lớp học là final để không thể mở rộng.
  •    Đặt tất cả các trường ở chế độ riêng tư để không cho phép truy cập trực tiếp.
  •    Không cung cấp phương thức setter cho biến
  •    Đặt tất cả các trường có thể thay đổi final để giá trị của nó chỉ có thể được gán một lần.
  •    Khởi tạo tất cả các trường thông qua một hàm constructor.
  •    Thực hiện clone các object trong các phương thức getter để trả về một bản sao thay vì trả về object reference.

9. Singleton có nghĩa là gì?

Một singleton là một class chỉ cho phép một instance riêng của nó được tạo ra và cho phép truy cập vào instance được tạo ra đó. Nó chứa các static variable có thể chứa các instance duy nhất và riêng tư của chính nó. Nó được sử dụng trong các trường hợp khi người dùng muốn hạn chế sự instantiation (khởi tạo) của một class với chỉ một object. Điều này là hữu ích khi một object duy nhất được yêu cầu để phối hợp các hành động trên một hệ thống.

10. Dependency Injection là gì?

Đây là câu hỏi quan trọng nhất mà bạn phải biết nếu làm về Java EE hoặc Spring. Bạn có thể xem thêm tại bài viết khác của tôi: Dependency Injection là gì?

Nguồn: Sưu tầm từ internet via dzone

Các bài viết cùng chủ đề

Việt Nam khả năng thiếu 150.000 đến 200.000 nhân sự IT mỗi năm
Việt Nam khả năng thiếu 150.000 đến 200.000 nhân s...
Tổng quan ngành khoa học máy tính
Tổng quan ngành khoa học máy tính
8 xu thế công nghệ đáng chú ý nhất trong năm 2021
8 xu thế công nghệ đáng chú ý nhất trong năm 2021...
Tìm hiểu về API? Tại sao API lại được trọng dụng!
Tìm hiểu về API? Tại sao API lại được trọng dụng!...
Học ngôn ngữ lập trình nào để bắt kịp xu thế công nghệ năm 2021
Học ngôn ngữ lập trình nào để bắt kịp xu thế công ...
Nên làm việc ở công ty Product hay công ty Outsourcing?
Nên làm việc ở công ty Product hay công ty Outsour...

Các khóa đào tạo chuyên đề

Thiết kế và lập trình Website PHP, Laravel chuyên nghiệp - FullStack
Thiết kế và lập trình Website PHP, Laravel chuyên nghiệp - FullStack
Lập trình ứng dụng trên nền tảng android Lập trình ứng dụng trên nền tảng android
Lập trình Ứng dụng với Công nghệ ASP.NET Core MVC, WebAPI, ReactJS - FullStack

Lập trình Ứng dụng với Công nghệ ASP.NET Core MVC, WebAPI, ReactJS - FullStack
Lập trình ứng dụng với WINDOWS FORM Lập trình ứng dụng với WINDOWS FORM
Lập trình ứng dụng với JAVA (FORM) Lập trình ứng dụng với JAVA (FORM)
Thiết kế và lập trình Ứng dụng với công nghệ Java (Java Framework springBoot, hibernate,...) - FullStack
Thiết kế và lập trình Ứng dụng với công nghệ Java (Java Framework springBoot, hibernate,...) - FullStack
Thiết kế và lập trình website với công nghệ HTML5, CSS3, Javascript, Bootstrapt 4, Jquery Thiết kế và lập trình website với công nghệ HTML5, CSS3, Javascript, Bootstrapt 4, Jquery
Lập trình frontend với reacjs (Full) Lập trình frontend với reacjs (Full)
Viện Công Nghệ Và Đào Tạo Devmaster

DEVMASTER ACADEMY

Địa chỉ: Tầng 6 - Tòa nhà VIỆN CÔNG NGHỆ
Số 25, Vũ Ngọc Phan - Láng Hạ - Đống Đa - Hà Nội

Hotline: 0969 609 003 | 0978 611 889

devmaster.contact@gmail.com

hna.tvchung@gmail.com

CÁC KHÓA HỌC CHUYÊN ĐỀ

  • Thiết kế và lập trình Website PHP, Laravel chuyên nghiệp - FullStack
  • Lập trình ứng dụng trên nền tảng android
  • Lập trình Ứng dụng với Công nghệ ASP.NET Core MVC, WebAPI, ReactJS - FullStack
  • Lập trình ứng dụng với WINDOWS FORM
  • Lập trình ứng dụng với JAVA (FORM)
  • Thiết kế và lập trình Ứng dụng với công nghệ Java (Java Framework springBoot, hibernate,...) - FullStack
  • Thiết kế và lập trình website với công nghệ HTML5, CSS3, Javascript, Bootstrapt 4, Jquery
  • Lập trình frontend với reacjs (Full)
Viện Công Nghệ Và Đào Tạo Devmaster

VIỆN CÔNG NGHỆ VÀ ĐÀO TẠO DEVMASTER - Học thực tế * Làm thực tế * Cam kết việc làm
Copyright by Ⓒ DEVMASTER 2015