Câu hỏi phỏng vấn + vấn đáp Java Đại học Khoa học Tự Nhiên ĐHQGHN

11 18 0
Câu hỏi phỏng vấn + vấn đáp Java  Đại học Khoa học Tự Nhiên  ĐHQGHN

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Java Interview Question 1 Java program anatomy 1 1 What is package? Một package trong java đc sử dụng để nhóm các lớp liên quan, giống như một thư mục trong thư mục tệp Các package đc sử dụng để tránh xung đột tên và viết mã có thể bảo trì tốt hơn 1 2 Why do you need to import packages? Import packages hoặc class để có thể sử dụng được thư viện 1 3 What is the diference between argument and parameter? (sự khác nhau giữa đối số và tham số) Tham số là một biến trong khai báo hàm Đối số là giá trị.

Java Interview Question Java program anatomy 1.1 What is package? - Một package java đc sử dụng để nhóm lớp liên quan, giống thư mục thư mục tệp Các package đc sử dụng để tránh xung đột tên viết mã bảo trì tốt 1.2 Why you need to import packages? - Import packages class để sử dụng thư viện 1.3 What is the diference between argument and parameter? (sự khác đối số tham số) Tham số biến khai báo hàm Đối số giá trị thực biến chuyển đến hàm Khi phương thức gọi, đối số liệu bạn truyền vào tham số phương thức Compliling and executing java code in JVM 2.1 explain the process of java code compilation and execution? (giải thích q trình biên dịch thực thi mã java) - Biên dịch: Đầu tiên tệp nguồn java chuyển qua trình biên dịch, trình biên dịch sau mã hóa mã nguồn thành mã hóa độc lập với máy, gọi bytecode Nội dung lớp có tệp nguồn lưu trữ tệp class riêng biệt Trong chuyển đổi mã nguồi thành mã bytecode, trình biên dịch thực theo bước sau: B1: Phân tích cú pháp: đọc tập hợp tệp nguồn java ánh xạ chuỗi mã thông báo kết vào AST – node B2: Enter: nhập ký hiệu cho định nghĩa vào bảng kí hiệu B3: Xử lý thích: yêu cầu, xử lý thích tìm thấy đơn vị biên dịch định B4: Thuộc tính: thuộc tính cú pháp, bước gồm phân giải tên, kiểm tra kiểu gấp liên tục B5: Luồng: thực phân tích luồng liệu từ bước trước, bao gồm kiểm tra nhiệm vụ khả truy cập lại B6: Desugar: viết lại AST dịch bớt số đường cú pháp B7: tạo tệp class - Thực thi: - Các tệp lớn trình biên dịch tạo độc lập với máy hệ điều hành, cho phép chúng chạy hệ thống Để chạy, tệp lớp (lớp chứa phương thức chính) chuyển đến JVM sau trải qua giai đoạn trước mã máy cuối thực thi Các giai đoạn là: Giai đoạn 1: nạp lớp Giai đoạn 2: Trình xác minh Giai đoạn 3: Trình biên dịch Just – In - Time 2.2 What is the difference between bytecode and source code? (sự khác bytecode mã nguồn) 2.3 What is JVM? Is it same or different for different Operating Systems? (JVM gì? Nó giống hay khác hệ điều hành khác nhau) JVM (java virtual machine) máy ảo java – đc dùng để thực thi chương trình java hay hiểu nơm na trình thơng dịch java Nó cung cấp mơi trường để code java thực thi Chương trình java biên dịch tạo mã máy gọi bytecodes Mỗi hệ điều hành khác (windows, android, linux…) lại có loại JVM khác cài đặt Chương trình java chạy đc window/linux/IOS có JVM chạy tảng JVM giống cho tất phiên Windows, có khác biệt kiến trúc 2.4 What is the role of class loader in JVM? (vai trò trình nạp lớp JVM gì?) Data Types 3.1 What are primitive data types? (kiểu liệu nguyên thủy gì?) Dữ liệu nguyên thủy kiểu liệu java cung cấp sẵn cho sử dụng Có kiểu liệu sau: byte, short, int, long, char, boolean, float double 3.2 If a variable of primitive data type is not assigned, what does it contain? (nếu biến kiểu nguyên thủy k đc gán chứa j?) Nếu biến kiểu nguyên thủy không khai báo trước chứa giá trị mặc định 3.3 What happens when you assign a variable of primitive data type to another variable of same type? (điều xảy bạn gán biến kiểu liệu nguyên thủy cho biến khác kiểu?) 3.4 What are reference data types? (các kiểu liệu tham chiếu gì?) Có kiểu liệu tham trị, cịn lại kiểu liệu tham chiếu Ví dụ như: object, list, array… tất class mà bạn tạo 3.5 What happens when you assign a variabla of reference data type to another variable of same reference type? (điều xảy bạn gán biến thể kiểu liệu tham chiếu cho biến khác có kiểu tham chiếu?) 3.6 What are the differences between primitive data types and reference data types? (sự khác kiểu liệu nguyên thủy kiểu liệu tham chiếu?) Sự khác kiểu liệu cách thức mà chúng lưu trữ liệu, bên cạnh kiểu liệu ngun thủy khơng có phương thức kèm, kiểu liệu tham chiếu có phương thức kèm ArrayList có add(), remove(), Object có toString()… Cụ thể: - Kiểu liệu nguyên thủy lưu trữ liệu thân - Kiểu liệu tham chiếu lưu trữ giá trị địa đến vùng nhớ mà tham chiếu đến 3.7 If a variable of reference data type is not assigned, what does it contain? (nếu biến kiểu liệu tham chiếu khơng đc gán chứa gì?) Access Modifiers (công cụ sửa đổi quyền truy cập) 4.1 what is the purpose of access modifier? (mục đích access modifiers?) Có hai loại access modifier java access modifier non-access modifier Access modifier java xác định phạm vi truy cập biến, phương thức, constructor class 4.2 What is the scope of private, protected and public access modifiers? (phạm vi access modifiers) - Phạm vi truy cập access modifier: private, default, protected, public - Ngồi có nhiều non-access modifier static, abstract, native,… 4.3 What happens when no access modifier is specified with the class? (điều xảy khơng có access modifier đc định với lớp) Static 5.1 What are static variables? (biến tĩnh gì?) Biến tĩnh biến tạo lần gọi hàm lần khơng bị xóa để tạo lại gọi lại hàm 5.2 What are static methods? (phương thức tĩnh gì?) Một phương thức tĩnh phương thức gọi sử dụng mà khơng cần thông qua việc tạo đối tượng phương thức tĩnh không thuộc đối tượng thực thể lớp mà thuộc thân lớp 5.3 Does static method has access to an instance member? Why? (phương thức tĩnh có quyền truy cập vào thành viên thể k? sao) Final 6.1 Explain final class? What are the benefits of declaring a class final? (giải thích lớp final? Lợi ích việc khai báo lớp final j?) Lớp final: từ khóa final sử dụng cho lớp, lớp kế thừa 6.2 Explain final method? What are the benefits of declaring a method final? Khi phương thức khai báo với từ khóa final, class kế thừa ghi đè (override) phương thức 6.3 Explain final variable? What are the benefits of declaring a variable final? Khi biến khai báo với từ khóa final, chứa giá trị tồn chương trình (nói dễ hiểu biến hằng) 6.4 When you declare a variable final, can you change it to reference another object? Nếu bạn tạo biến final, bạn thay đổi giá trị biến final (nó số) Pass by value or Pass by reference 7.1 What is the difference between pass by value and pass by reference? (sự khác truyền tham trị truyền tham chiếu) Truyền tham chiếu: truyền địa biến vào hàm Truyền tham trị: truyền giá trị biến vào hàm Khi truyền theo tham trị giá trị biến chép thành sao, việc tính tốn thực tạo => giá trị biến truyền vào không thay đổi Khi truyền theo tham chiếu, địa biến truyền vào hàm, việc thực phép tính tốn hàm biến thực trực tiếp địa chứa giá trị biến => giá trị biến truyền vào thay đổi 7.2 How are the reference type arguments passed in java; by reference or by value? Trong java, truyền tham số theo giá trị Điều có nghĩa giá trị chuyển cho phương thức việc truyền giá trị làm thay đổi giá trị thực đối tượng 7.3 If a copy of reference is passed by value, how can the method get access to the object that the reference is pointing to? (nếu tham chiếu truyền theo giá trị, làm cách để phương thức truy cập vào đối tượng mà tham chiếu trỏ tới) 7.4 If a copy of reference is passed by value, can you change the value of reference? (nếu tham chiếu chuyển theo giá trị, bạn thay đổi giá trị ham chiếu không?) Naming Concvention (quy ước đặt tên) 8.1 what is naming convention? Quy tắc đặt tên quy ước phải tuân theo định nên đặt tên định danh class, package, variable, constant, method… Quy tắc tuân theo định dạng: tên không đc chứa khoẳng trắng nào, tên k nên bắt đầu ký tự đặc biệt… 8.2 Why you need naming convention? (tại cần quy đặt tên) Tất class, interface, package, method… đưa quy ước đặt tên, không tuân theo quy ước này, tạo nhầm lẫn sai sót viết code Ngoài tuân theo quy ước đặt tên giúp code bạn dễ đọc cho thân lập trình viên khác 8.3 What is the difference between Upper Camel Case and Lower Camel Case? 8.4 Explain naming convention for interface, class, method, variable, constant, enum and acronyms? (giải thích quy ước đặt tên cho interface, class, method, variable, constant, enum từ viết tắt) - Tên interface java nên tuân theo quy ước sau: Bắt đầu chữ in hoa Phải tính từ, sử dụng từ thích hợp thay từ viết tắt - Tên class: Bắt đầu chữ in hoa Phải danh từ, sử dụng từ ngữ thích hợp thay từ viết tắt - Tên method: Nên bắt đầu chữ thường Phải động từ main(), print()… Nếu tên chứa nhiều từ, bắt đầu chữ viết thường theo sau chữ viết hoa - Tên biến (variable): Nên bắt đầu chữ viết thường id, name, radius… Không nên bắt đầu ký tự đặc biệt $ hay _ Nếu tên chứa nhiều từ, bắt đầu chữ viết thường theo sau chữ viết hoa firstName, lastName - Tên (constant): Nên viết chữ in hoa RED, YELLOW Nếu tên chứa nhiều từ, phải phân cách dấu gạch Có thể chứa số không bắt đầu số Polymorphism (tính đa hình) 9.1 what is Polymorphism? Đa hình lúc runtime trình gọi phương thức ghi đè thời gian thực thi chương trình Trong trình này, phương thức ghi đè gọi thông qua biến tham chiếu lớp cha 9.2 What are different ways to achieve polymorphism? (các cách khác để đạt tính đa hình?) Có hai kiểu đa hình java: - Đa hình tĩnh static/compile: trình biên dịch định phân tích đa hình q trình biên dịch, gọi tính đa hình đa hình thời gian biên dịch đa hình tĩnh Đa hình động Dynamic/run: đa hình động hay đa hình runtime đa hình giải hành động thời gian chạy thời gian biên dịch gọi hay nói cách khác, đa hình lúc runtime q trình gọi phương thức ghi đè thời gian thực thi chương trình 9.3 How is inheritance useful to achieve polymorphism? 9.4 What are the benefits of polymorphism? - Tính đa hình cho phép lớp cha xác định phương thức chung cho tất lớp dẫn xuất cho phép lớp định việc triển khai bổ sung số tất phương thức - Ghi đè phương thức hỗ trợ tính đa hình động, khía cạnh tính đa hình liên kết động thời gian chạy - Tính đa hình cung cấp khả cho phương pháp thực việc khác sở đối tượng mà tác động 10 Subtype polymorphism 10.1 what is Subtype Polymorphism? 11 Overriding (ghi đè phương thức) 11.1 what is method overriding? Overriding sử dụng trường hợp lớp kế thừa từ lớp cha muốn định nghĩa lại phương thức có mặt lớp cha Một lớp cha thơng thường có nhiều lớp kế thừa, nhiên phương thức lớp cha phù hợp với lớp khơng phù hợp với lớp khác, lớp cần ghi đè lại phương thức cho phù hợp 11.2 What dynamic polymorphism? (đa hình động gì?) Đa hình động (overriding) đa hình lúc thực thi (runtime), cho phép tạo lớp trừu tượng (abstract class) sử dụng để cung cấp triển khai lớp phần giao diện 11.3 Why can’t you override static methods defined in super class or interface? 11.4 Can you override a final method defined in super class? 12 Overloading (nạp chồng phương thức) 12.1 explain method overloading? Trong java, overloading định nghĩa nạp chồng phương thức, có nghĩa lớp có nhiều phương thức tên nhưng: - khác số đối số truyền vào đối số có kiểu liệu - có số đối số truyền vào đối số khơng có kiểu liệu - khác trình tự kiểu liệu đối số 12.2 What is static polymorphism? (tính đa hình tĩnh gì?) Khi trình biên dịch định phân tích đa hình q trình biên dịch, gọi tính đa hình đa hình tgian biên dịch đa hình tĩnh Trong java thực đạt tính đa hình thời gian biên dịch với hỗ trợ phương thức nạp chồng 12.3 What is the difference between static and dynamic polymorphism? - Đa hình động (thời gian chạy) đa hình tồn thời gian chạy đây, trình biên dịch java khơng hiểu phương thức gọi thời điểm biên dịch Chỉ JVM - định phương thức gọi vào thời gian chạy Quá tải phương thức ghi đè phương thức phương thức thể ví dụ cho đa hình động - Đa hình tĩnh (thời gian biên dịch): đa hình thể thời gian biên dịch Ở đây, trình biên dịch java biết phương thức gọi Phương thức nạp chồng phương thức ghi đè phương thức tĩnh; ghi đè phương thức phương thức riêng tư cuối ví dụ cho đa hình tĩnh 12.4 Can you override a method such that all the parameters are same with the difference only in the return type? 12.5 What are the benefits of method overloading? - Sử dụng nạp chồng phương thức giúp tăng khả đọc hiểu chương trình - Sử dụng phương thức, lại muốn làm thêm công việc khác 12.6 What is the difference between overriding and overloading? - Overriding đc sử dụng phương thức, muốn thay đổi phần thân phương thức - Overloading sử dụng phương thức lại muốn thêm công việc khác 13 Abstraction (trừu tượng) 13.1 What is abstraction? tính trừu tượng java tính chất khơng thể cụ thể mà nêu tên vấn đề Đó trình che giấu hoạt động bên hiển thị tính thiếu yếu đối tượng người dùng 13.2 How abstraction is different from encapsulation? (trừu tượng khác với đóng gói ntn) - Đóng gói việc đóng gói liệu chức hoạt động liệu thành thành phần hạn chế quyền truy cập vào số thành phần đối tượng - Đóng gói có nghĩa biểu diễn bên đối tượng thường bị ẩn khỏi chế độ xem bên định nghĩa đối tượng - Trừu tượng chế đại diện cho tính thiếu yếu mà không bao gồm chi tiết thực - Đóng gói: ẩn thơng tin - Trừu tượng: thực ẩn 13.3 What are the benefits of abstraction? - Cho phép lập trình viên loại bỏ tính chất phức tạp đối tượng cách đưa thuộc tính phương thức cần thiết đối tượng lập trình, cải thiện khả bảo trì hệ thống Tính trừu tượng giúp tập trung vào cốt lõi cần thiết đối tượng thay quan tâm đến cách thực - Tính trừu tượng cung cấp nhiều tính mở rộng sử dụng kết hợp với tính đa hình kế thừa lập trình hướng đối tượng 14 Inheritance (thừa kế) 14.1 Explain inheritance? - Kế thừa java liên quan hai class với nhau, có class cha (superclass) class (subclass) Khi kế thừa class hưởng tất phương thức thuộc tính class cha Tuy nhiên, truy cập thành viên public protected class cha Nó khơng phép truy cập đến thành viên private class cha 14.2 What is the purpose of inheritance? - Lớp tận dụng lại thuộc tính phương thức lớp cha - Lớp định nghĩa thêm thuộc tính phương thức riêng định nghĩa lại phương thức kế thừa từ lớp cha cho phù hợp với mục đích 14.3 What should be the criteria to decide inheritance relation between two classes? 14.4 How inheritance plays an important role in polymorphism? 14.5 Can you inherit final class? 14.6 What happens if you don’t use super keyword to call an overridden member? 15 Composition (hợp thành) 15.1 Explain composition? Khai báo biến tham chiếu class class khác gọi composition (sự hợp thành) Compositon java kỹ thuật thiết kế để thực thi mối quan hệ has – a class Chúng ta sử dụng java Inheritance Object composition java để sử dụng lại code 15.2 What is the difference between inheritance and composition? - Kế thừa khả cho lớp kế thừa thuộc tính hành vi từ lớp cha cách mở rộng - Thành phần khả lớp chứa đối tượng lớp khác làm liệu thành viên - Nếu lớp mở rộng, kế thừa tất thuộc tính/hành vi công khai bảo vệ hành vi bị lớp ghi đè Nhưng lớp chứa lớp khác, container khả thay đổi thêm hành vi vào lớp Kế thừa đại diện cho mối quan hệ mối quan hệ OOP, thành phần đại diện cho mối quan hệ có mối quan hệ 15.3 What should be the criteria to decide composition relation between two classes? (đâu tiêu chí định mối quan hệ thành phần hai nhóm?) - Composition đại diện cho quan hệ part-of (là phần) - Trong compositon, hai thực thể phụ thuộc vào - Khi có mối quan hệ hợp thành hai thực thể, đối tượng composed khơng thể tồn mà khơng có thực thể khác 15.4 Explain few problems with inheritance that can be avoided by using composition? (giải thích số vấn đề kế thừa tránh cách sử dụng composition) - Giải vấn đề tạo big hirachy dùng kế thừa Compositon giúp dễ rang reuse code đối tượng cách linh hoạt Khi thêm / thay đổi hành vi đối tượng khơng cần phải thay đổi q nhiều code có, cần viết thêm code thay hành vi vào hành vi - Để reuse code mà có liên quan đến UI kéo thả sử dụng inheritance bất khả thi, cịn composition giải 15.5 When would you prefer composition over inheritance and vice versa? (khi bạn thích composition inheritance ngược lại?) - Sự kế thừa có ý nghĩa nơi có tính đa hình động Nếu khơng composition thích hợp Composition có nhiều dạng, bao gồm thêm thành viên liệu thêm đối số mẫu… 16 String Immutability (tính bất biến chuỗi) 16.1 Why String objects are called immutable? (tại đối tượng chuỗi gọi bất biến?) - Security: tham số thường biểu diễn dạng String kết nối mạng, url kết nối sở liệu… - Đồng hóa đồng thời: làm cho chuỗi bất biến tự động cho chúng trở thành chuổi an tồn giải vấn đề đồng hóa - Bộ nhớ đệm: trình biên dịch tối ưu hóa đối tượng chuỗi, thấy hai đối tượng có giá trị cần đối tượng chuỗi - Tải lớp: String sử dụng làm đối số cho tải lớp thay đổi, dẫn đến lớp sai tải 16.2 How is string object created in memory? (đối tượng chuỗi tạo nhớ) - What are the advantages and disadvantages of String Immutability? String Literal vs Object 17.1 What is String literal? 17.2 What are the differences between String Literal and String Object? 17.3 How are the String Literals stores? What is String interning? 18.1 what is String interning? 18.2 How can you intern a String object? 18.3 What happens when you store a new String literal value that is already present in the string pool? 18.4 What are the drawbacks of creating large number of String literals? String Pool Memory Management 19.1 Explain String Pool Memory Management? 19.2 How are String Literals stored in memory? 19.3 How are String Objects stored in memory? StringBuilder vs StringBuffer 20.1 what are the similarities and differences between StringBuffer and StringBuilder? 20.2 When would you prefer StringBuffer to StringBuilder? Stack vs Heap 21.1 What is stack? 16.3 17 18 19 20 21 Stack vùng nhớ sử dụng để lưu trữ tham số biến local phương thức phương thức gọi 21.2 What is heap? Heap vùng nhớ nhớ sử dụng để lưu trữ đối tượng từ khóa new gọi ra, biến static biến toàn cục (biến instance) 21.3 How is memory allocated and de-allocated in stack, during its lifecycle? 21.4 When does the stack memory gets released? (khi nhớ ngăn xếp giải phóng?) 21.5 21.6 21.7 21.8 When does the heap memory gets released? Why memory allocation in stack is faster as compared to heap? What exception you get when stack memory is exhausted? What exception you get when heap memory is exhausted? ... nhau) JVM (java virtual machine) máy ảo java – đc dùng để thực thi chương trình java hay hiểu nơm na trình thơng dịch java Nó cung cấp mơi trường để code java thực thi Chương trình java biên dịch... composition (sự hợp thành) Compositon java kỹ thuật thiết kế để thực thi mối quan hệ has – a class Chúng ta sử dụng java Inheritance Object composition java để sử dụng lại code 15.2 What is the... biến truyền vào thay đổi 7.2 How are the reference type arguments passed in java; by reference or by value? Trong java, truyền tham số theo giá trị Điều có nghĩa giá trị chuyển cho phương thức

Ngày đăng: 17/04/2022, 20:48

Tài liệu cùng người dùng

Tài liệu liên quan