Phỏng vấn Java

0.0(0)
studied byStudied by 0 people
0.0(0)
full-widthCall Kai
learnLearn
examPractice Test
spaced repetitionSpaced Repetition
heart puzzleMatch
flashcardsFlashcards
GameKnowt Play
Card Sorting

1/32

encourage image

There's no tags or description

Looks like no tags are added yet.

Study Analytics
Name
Mastery
Learn
Test
Matching
Spaced

No study sessions yet.

33 Terms

1
New cards

Bạn hiểu khái niệm Java như thế nào? Vì sao Java không phụ thuộc vào nền tảng?

Java là một trong những loại ngôn ngữ lập trình vẫn đang được sử dụng phổ biến hiện nay. Mục đích của Java là lập trình hướng đối tượng cao cấp và hầu như sẽ sử dụng ngôn ngữ C hoặc C ++.

Hiện tại, Java được sử dụng để thiết kế những chương trình, phần mềm hoặc các ứng dụng cho rất nhiều nền tảng khác nhau. Do đó, có thể thấy rằng, Java là ngôn ngữ không phụ thuộc vào bất kỳ nền tảng nào.

2
New cards

Java có hoàn toàn hướng đối tượng không?

Java không hướng đối tượng hoàn toàn. Thay vào đó nó có sử dụng các loại dữ liệu như char, byte, float,.. đều không phải là đối tượng.

3
New cards

Trong ngôn ngữ lập trình Java, đối tượng được hiểu như thế nào?

Đối tượng trong Java là thực thể runtime, được lưu vào trong các trường, hành vi của đối tượng sẽ được thể hiện qua phương thức giao tiếp.

4
New cards

Tính năng nổi bật của Java là gì?

Đó là sự đơn giản, an toàn và tính di động.

Về sự đơn giản, có thể nói Java là ngôn ngữ lập trình dễ tiếp cận và học tập nhất so với các ngôn ngữ lập trình khác hiện nay. Vì vậy các lập trình viên, nhà phát triển ứng dụng đều có thể sử dụng nó để xây dựng phần mềm.

Java an toàn và bảo mật nhờ có trình thông dịch JVM. Sau khi được cài đặt chung với Java, JVM sẽ liên tục cập nhật chương trình bảo mật mới nhất từ Internet.

Cuối cùng, Java có tính di động bởi nó được sáng tạo dựa trên nguyên tắc “Viết một lần, chạy được ở bất cứ đâu”. Lập trình viên có thể sử dụng Java để code ở bất cứ máy tính nào theo ý thích.

5
New cards

Nêu các đặc điểm của Java mà bạn biết?

Java là ngôn ngữ lập trình hướng đối tượng, độc lập nền tảng nhờ JVM. Nó hỗ trợ đa luồng, có bộ thu gom rác tự động, và được thiết kế để mạnh mẽ (robust), bảo mật và dễ mở rộng. Java vừa biên dịch vừa thông dịch, giúp chạy linh hoạt trên nhiều hệ điều hành.

6
New cards

Hiện tại, Java đang được hỗ trợ trên những nền tảng nào?

Java hiện được hỗ trợ trên hầu hết các nền tảng phổ biến như Windows, macOS, Linux, Android và các hệ điều hành máy chủ. Nhờ JVM, Java có thể chạy trên bất kỳ nền tảng nào có trình thông dịch Java, đúng với triết lý 'Viết một lần, chạy mọi nơi'.

7
New cards

Bạn hiểu thế nào về lớp, biến lớp, biến instance, biến cục bộ trong Java?

  • Lớp: Là một blueprint mà tại đây, các đối tượng đơn sẽ được tạo thành.

  • Biến lớp: Là những biến mà khi lập trình sẽ cần khai báo với một lớp thông qua từ khóa static hoặc với bất kỳ phương thức nào.

  • Biến instance: Là tập hợp những biến nằm trong một lớp, nhưng nằm ngoài các phương thức.

  • Biến cục bộ: Là các biến bên trong phương thức và sẽ tự hủy khi phương thức kết thúc.

8
New cards

Bạn có biết về các interface cơ bản trong Java Collections framework không?

Collection interface, List interface, Set interface, Map interface, và Queue interface là các interface chính trong Java Collections. 

9
New cards

Iterator là gì?

Iterator là các đối tượng cho phép ta lấy từng phần tử của nó và có thể thay thế Enumerations. Iterator xuất hiện khắp mọi nơi trong Python. Nó có thể ở bên trong các vòng lặp, comprehension, generator, v.vv..

Giao thức iterator (Iterator Protocol) có 2 phương thức chính bao gồm phương thức iter trả về chính đối tượng iterator và phương thức next trả về phần tử tiếp theo. 

10
New cards

“ Access Specifiers” gồm những gì?

Access Specifiers là xác định phạm vi truy cập. Trong Java tổng cộng có 4 Access Specifiers là: public (công khai), private (riêng tư), protected (bảo vệ), default (mặc định).

Với mỗi trạng thái, quyền truy cập được xác định như sau:

  • Public specifier: bất cứ truy cập vào bất cứ lớp nào và bằng phương thức gì cũng được cho phép.

  • Private specifier: chỉ được truy cập vào lớp chỉ định bằng phương thức chỉ định.

  • Protected specifier: cho phép truy cập bằng các lớp tương quan hoặc từ trong một lớp, một lớp con hoặc trong cùng một gói.

  • Default specifier: chỉ được truy cập trong phạm vi mặc định cho phép và trong cùng một gói.

11
New cards

Hãy nêu sự khác nhau của Iterator và ListIterator?

Một Iterator có thể được sử dụng để duyệt trong các List, nhưng một ListIterator chỉ sử dụng lặp lại List. Bên cạnh đó, Iterator duyệt các phần tử chỉ theo chiều hướng là chuyển tiếp trong khi ListIterator duyệt các phần tử theo hai hướng là chuyển tiếp và ngược lại.

12
New cards

Sự khác nhau giữa JDK, JVM và JRE là gì? 

  • JDK (Java Development Kit) là công cụ được sử dụng trong Java để biên dịch các chương trình. Bộ công cụ này chứa tất cả các công cụ cần thiết để phục vụ cho quá trình trên.

  • JVM (Java Virtual Machine) là máy ảo Java được dùng để tạo ra môi trường lý tưởng cho Java bytecode hoạt động chính xác nhất.

  • JRE (Java Runtime Environment) là môi trường do JVM tạo ra, nơi mà Java bytecode có thể hoạt động hiệu quả nhất.

13
New cards

Sự khác nhau giữa Path và Classpath Variables 

Path là là một biến được dùng để định vị các tệp thực thi. Vì vậy khi cài đặt Java ta cần thêm vị trí thư mục vào Path variable. Điều này cũng giúp hệ điều hành kiểm soát bất cứ thực thi nào.

Classpath Variables được dùng để định vị vị trí của các tệp lớn trong thư mục. Nó có thể là một thư mục, tệp Zip hoặc Jar được cài đặt trong ứng dụng Java.

14
New cards

“Garbage Collection” được dùng để làm gì?

Công dụng chính của tính năng Garbage Collection là xác định và loại bỏ các đối tượng (rác) không cần thiết để giải phóng bộ nhớ, tạo không gian để các tính năng khác hoạt động.

15
New cards

Cách đạt được Luồng an toàn trong Java

Để đạt được điều này bằng các cách sau:

  • Triển khai giao diện khóa đồng thời

  • Sử dụng một từ khóa dễ biến mất

  • Sử dụng các lớp bất biến

  • Các lớp an toàn luồng

16
New cards

Sự khác biệt giữa ‘method overloading’ và ‘method overriding’?

Với phương thức nạp chồng Method Overloading, các phương thức trong một lớp sẽ có cùng tên nhưng khác biệt về tham số. Còn với phương thức ghi đè Method Overriding, các lớp con sẽ có cùng cả tên và tham số. 

17
New cards

Trong JavaScript, Prototypal inheritance và classical inheritance là gì?

Prototypal inheritance là kế thừa nguyên mẫu. Bản chất prototype là một object trong JS. Với cơ chế Prototype, các object trong Javascript sẽ kế thừa các tính năng từ một object khác. 

Classical inheritance được hiểu là kế thừa lớp. Classical inheritance cho phép JavaScript developer tạo ra một lớp mới dựa trên định nghĩa của lớp đã tồn tại. Nhìn chung, sử dụng classical inheritance sẽ phức tạp hơn prototypal. 

18
New cards

Trong JavaScript, bạn hiểu thế nào về lập trình không đồng bộ?

Lập trình không đồng bộ là cách lập trình cho phép các đoạn code hoạt động không theo tuần tự. Bởi vì các threads là riêng biệt nên đoạn code dưới có thể chạy trước đoạn code trên. 

19
New cards

Functional programing là gì?

Functional programing là mô hình lập trình dựa trên hàm toán học. Mô hình này giống như lập trình tuần tự và lập trình hướng đối tượng. Mục tiêu chính của FP là tránh thay đổi giá trị của dữ liệu, tăng khả năng tái sử dụng chương trình.

20
New cards

“Object Cloning” là gì?

Object Cloning là nhân bản đối tượng, lệnh này được sử dụng để tạo các bản sao giống hệt với đối tượng gốc. Bạn thực hiện lệnh này bằng cách sử dụng phương thức Clone().

21
New cards

“Association’ trong Java là gì?

Association (sự liên kết) hình thành khi tất cả các đối tượng có vòng đời và không được sở hữu bởi bất cứ chủ thế nào.

22
New cards

Method reference là gì? Sự tiện lợi của nó?

Tính năng method reference cho phép người dùng khởi tạo Constructors và các Methods. Điều đặc biệt là chúng có thể được sử dụng như là lambdas.

23
New cards

Bạn hiểu thế nào về Java Spring?

Java Spring là khung Framework với mã nguồn mở, được thiết kế để lập trình Java. 2 nguyên tắc design chính để xây dựng Spring Framework là Dependency Injection và Aspect Oriented Programming. 

Ưu điểm của Java Spring là kích thước nhẹ khoảng 2MB và hoạt động trong suốt. Tính năng lõi của Spring có thể được sử dụng để phát triển Java Desktop, ứng dụng mobile, Java Web.

Java Spring gồm 3 phiên bản là Spring 2.5, Spring 3.0 và Spring 4.0.

24
New cards

Có thể sử dụng thuộc tính trong interface không? Interface có thể là final không?

Để sử dụng thuộc tính trong Interface, cần đáp ứng 2 điều kiện. Bao gồm thuộc tính là hằng số và đã được khai báo với từ khóa final. Và Interface không phải là final vì cần có implement interface thì mới sử dụng được. 

25
New cards

Kể tên các access modifier và phân biệt sự khác nhau

Trong Java, có 4 loại Access Modifier. Bao gồm public, protected, default và private. Sự khác biệt giữa các Access Modifier chủ yếu là phạm vi truy cập của chúng.

Cụ thể, public cho phép truy cập từ bất kỳ đâu trong chương trình. Protected cho phép truy cập từ các subclass của class đó, và từ trong package. Default cho phép truy cập từ cùng một package. Và private chỉ cho phép truy cập từ bên trong class đó.

26
New cards

“Super” là gì?

Super được sử dụng như một biến tham chiếu dùng để tham chiếu trực tiếp tới đối tượng của một lớp cha liền kề. Bất cứ một Instance của một lớp con cũng có một Instance tương ứng của lớp ta ngầm định, tức là được tham chiếu bởi biến Super.

27
New cards

Có thể sử dụng constructor của lớp cha để tạo đối tượng cho lớp con không?

Có, trong Java, bạn có thể sử dụng constructor của lớp cha để tạo đối tượng cho lớp con bằng cách sử dụng từ khóa super và chuyền các tham số cần thiết cho constructor của lớp cha.

Khi một đối tượng của lớp con được tạo, nó cần phải có các thuộc tính được khởi tạo bởi constructor của lớp cha. Để làm điều này, constructor của lớp con có thể gọi constructor của lớp cha bằng cách sử dụng từ khóa super.

28
New cards

Phương thức static là gì? Tại sao static là phương thức main?

Phương thức static là một phương thức thuộc về lớp, chứ không phải thuộc về một đối tượng cụ thể của lớp đó. Khi một phương thức được khai báo là static, nó có thể được gọi bằng cách sử dụng tên lớp mà không cần tạo một đối tượng của lớp đó.

Phương thức main trong Java được khai báo là static vì nó là điểm bắt đầu của chương trình. Ngoài ra, việc khai báo phương thức main là static còn giúp cho các biến và phương thức trong phương thức main có thể được truy cập trực tiếp mà không cần tạo một đối tượng của lớp. 

29
New cards

Giải thích sự khác biệt giữa StringBuffer và StringBuilder trong Java và cách chúng được sử dụng.

StringBuffer và StringBuilder là hai lớp trong Java được sử dụng để thao tác trên chuỗi (string). Có 3 điểm khác biệt nổi bật giữa hai lớp này. 

Thứ nhất, StringBuffer là thread-safe (đồng bộ hóa luồng), trong khi StringBuilder không phải. Thứ hai, StringBuffer có thể được sử dụng để tạo chuỗi có tính không thay đổi, trong khi StringBuilder không hỗ trợ tính năng này. 

Cuối cùng, StringBuilder là nhanh hơn StringBuffer trong các tình huống sử dụng đơn luồng. Vì StringBuffer được đồng bộ hóa.

30
New cards

Giải thích khái niệm Polymorphism (đa hình) và cách sử dụng nó trong Java?

Polymorphism là khả năng một đối tượng có thể có nhiều hình dạng hoặc hành vi khác nhau. Trong Java, có hai loại đa hình là đa hình tĩnh (Static Polymorphism) và đa hình động (Dynamic Polymorphism). 

Đa hình tĩnh là khai báo nhiều phương thức cùng tên nhưng khác về tham số đầu vào hoặc kiểu dữ liệu trả về.

31
New cards

Giải thích sự khác biệt giữa overloading và overriding trong Java và cách chúng được sử dụng.

Overloading là quá trình tạo ra nhiều phương thức có cùng tên nhưng khác nhau về số lượng đối số hoặc kiểu dữ liệu của đối số. Trong khi đó, overriding là quá trình ghi đè (override) phương thức của lớp cha bằng phương thức có cùng tên, cùng kiểu trả về và cùng danh sách tham số trong lớp con.

Tiếp theo, đối với overloading, khi một phương thức được gọi, Java sẽ tìm kiếm phương thức phù hợp nhất để sử dụng dựa trên số lượng và kiểu dữ liệu của các đối số được truyền vào. Còn với overridding, khi một phương thức của lớp con được gọi, phương thức của lớp con sẽ được thực thi thay vì phương thức của lớp cha.

Cuối cùng, overloading được sử dụng để cung cấp các phương thức có cùng tên nhưng với chức năng khác nhau, giúp tăng tính linh hoạt và đơn giản hóa mã nguồn. Trong khi overriding được sử dụng để mở rộng hoặc thay đổi hành vi của phương thức đã có trong lớp cha.

32
New cards

OOP là gì?

OOP là một phương pháp lập trình trong đó chương trình được thiết kế dưới dạng các đối tượng, mỗi đối tượng có thuộc tính và phương thức riêng. OOP tập trung vào đối tượng và quan hệ giữa các đối tượng, giúp cho mã nguồn dễ hiểu, dễ bảo trì, tái sử dụng và mở rộng.

33
New cards

Giải thích sự khác biệt giữa checked và unchecked exception trong Java và cách xử lý chúng.

Checked exception là lỗi bắt buộc phải xử lý (bằng try-catch hoặc throws), ví dụ như IOException hoặc SQLException. Unchecked exception là lỗi xảy ra tại runtime, không bắt buộc xử lý, ví dụ như NullPointerException hoặc ArrayIndexOutOfBoundsException. Checked giúp kiểm soát lỗi sớm, còn unchecked thường do lỗi logic hoặc dữ liệu không hợp lệ.