![translation](https://cdn.durumis.com/common/trans.png)
Đây là bài viết được dịch bởi AI.
[Không chuyên ngành, sống sót với tư cách nhà phát triển] 14. Tóm tắt nội dung phỏng vấn kỹ thuật thường gặp của nhà phát triển mới vào nghề
- Ngôn ngữ viết: Tiếng Hàn Quốc
- •
-
Quốc gia cơ sở: Tất cả các quốc gia
- •
- CNTT
Chọn ngôn ngữ
Văn bản được tóm tắt bởi AI durumis
- Kết hợp các câu hỏi liên quan đến kỹ thuật thường gặp trong các cuộc phỏng vấn nhà phát triển mới vào nghề, cung cấp lời giải thích về các chủ đề đa dạng như vùng bộ nhớ, cấu trúc dữ liệu, cơ sở dữ liệu, lập trình, thuật toán thay thế trang, tiến trình và luồng, OSI 7 lớp, TCP và UDP, v.v.
- Giúp người đọc hiểu rõ hơn thông qua lời giải thích ngắn gọn về mỗi chủ đề cùng với các ví dụ điển hình.
- Chứa đựng những thông tin hữu ích giúp người phát triển tiếp thu kiến thức kỹ thuật cơ bản cần thiết để chuẩn bị cho cuộc phỏng vấn.
Không chuyên ngành, làm thế nào để tồn tại với tư cách là nhà phát triển
#14. Những câu hỏi phỏng vấn kỹ thuật thường gặp đối với nhà phát triển mới vào nghề
[Khu vực bộ nhớ chính]
- Khu vực mã: Khu vực lưu trữ mã nguồn của chương trình, CPU lấy lệnh (nguồn, hàm, câu lệnh điều khiển) được lưu trữ trong khu vực mã để xử lý. Ví dụ: Khi một chương trình được viết bằng ngôn ngữ C được thực thi, khu vực mã sẽ lưu trữ mã nguồn của chương trình này.
- Khu vực dữ liệu: Khu vực lưu trữ các biến toàn cục và biến tĩnh, được phân bổ cùng với việc khởi chạy chương trình và không bị hủy cho đến khi chương trình kết thúc. Ví dụ: Khi một chương trình được viết bằng ngôn ngữ C được thực thi, khu vực dữ liệu sẽ lưu trữ các biến toàn cục hoặc biến tĩnh được khai báo trong chương trình này.
- Khu vực ngăn xếp: Khu vực bộ nhớ tạm thời mà chương trình sử dụng, các biến cục bộ và tham số liên quan đến việc gọi hàm được lưu trữ. Được phân bổ cùng với việc gọi hàm và bị hủy khi hàm kết thúc. Ví dụ: Khi một hàm được viết bằng ngôn ngữ C được gọi, các biến cục bộ hoặc tham số được sử dụng trong hàm đó sẽ được phân bổ vào khu vực ngăn xếp.
- Khu vực heap: Khu vực cho phép người dùng phân bổ và giải phóng động bộ nhớ. Ví dụ: Khi bạn phân bổ động bộ nhớ bằng cách sử dụng hàm malloc() trong C, khu vực bộ nhớ được phân bổ sẽ được lưu trữ trong khu vực heap.
[Cấu trúc dữ liệu]
- Ngăn xếp: Cấu trúc dữ liệu theo phương thức LIFO (Last In First Out). Ví dụ: Nút "Quay lại" trong máy tính giống với ngăn xếp. Các trang đã truy cập trước đó được lưu trữ trong ngăn xếp và khi bạn nhấn nút "Quay lại", trang được lưu trữ gần đây nhất sẽ được lấy ra và hiển thị.
- Hàng đợi: Cấu trúc dữ liệu theo phương thức FIFO (First In First Out). Ví dụ: Việc lấy số thứ tự ở ngân hàng và vào hàng đợi giống với hàng đợi. Người đến đầu tiên được xử lý đầu tiên và người đến sau được xử lý sau cùng.
- Cây: Cấu trúc dữ liệu biểu diễn dữ liệu theo cấu trúc phân cấp. Ví dụ: Cây DOM của HTML giống với cây. Cấu trúc của trang HTML được biểu diễn bằng cây, bắt đầu từ nút gốc là thẻ html và các nút con được biểu diễn theo thứ tự.
- Heap: Một trong những cấu trúc cây nhị phân, được chia thành heap tối đa và heap tối thiểu. Ví dụ: Trong hàng đợi ưu tiên, dữ liệu có mức độ ưu tiên cao nhất nằm ở nút gốc của heap và dữ liệu có mức độ ưu tiên cao thứ hai nằm ở nút con là ví dụ về heap tối đa.
[RDBMS và NoSQL]
- RDBMS: Cơ sở dữ liệu quản lý dữ liệu theo cấu trúc, định nghĩa và quản lý dữ liệu theo sơ đồ nghiêm ngặt. Có thể lưu trữ dữ liệu phân tán và dễ dàng sửa đổi. Ví dụ: MySQL, Oracle, MS-SQL là những ví dụ điển hình về RDBMS.
- NoSQL: Cơ sở dữ liệu lưu trữ và quản lý dữ liệu theo sơ đồ linh hoạt. Thích hợp cho việc xử lý và lưu trữ dữ liệu khối lượng lớn, khả năng mở rộng cao. Ví dụ: MongoDB, Cassandra, HBase là những ví dụ điển hình về NoSQL.
[Lập trình hướng thủ tục và hướng đối tượng]
- Lập trình hướng thủ tục: Kỹ thuật lập trình coi trọng việc xử lý theo trình tự. Các ngôn ngữ như C, Pascal là những ngôn ngữ hướng thủ tục.
- Lập trình hướng đối tượng: Phương pháp xử lý bằng cách liên kết logic dữ liệu và thủ tục dựa trên khái niệm đối tượng (Object). Các ngôn ngữ như Java, C++, Python là những ngôn ngữ hướng đối tượng. Ví dụ: Trong chương trình mô phỏng ô tô, ô tô được biểu diễn dưới dạng đối tượng, các thuộc tính của ô tô (màu sắc, gia tốc,...) được biểu diễn bằng dữ liệu, các chức năng mà ô tô thực hiện (chạy, dừng,...) được biểu diễn bằng phương thức.
[Ghi đè và quá tải]
- Ghi đè: Việc định nghĩa lại phương thức mà lớp cha sở hữu trong lớp con để sử dụng. Khi lớp con gọi phương thức của lớp cha, phương thức được định nghĩa lại trong lớp con sẽ được thực thi thay vì phương thức của lớp cha. Ví dụ: Phương thức toString() trong Java là ví dụ về ghi đè.
- Quá tải: Việc định nghĩa nhiều phương thức cùng tên nhưng khác nhau về kiểu và số lượng tham số để đáp ứng các loại cuộc gọi khác nhau. Các phương thức có tham số khác nhau nhưng cùng tên sẽ hoạt động. Ví dụ: Phương thức print() trong Java là ví dụ về quá tải.
[Thuật toán thay thế trang]
- FIFO: Thuật toán thay thế trang lâu nhất được tải vào bộ nhớ vật lý. Việc "Đóng" trong thanh tác vụ của máy tính cũng tương tự như thuật toán FIFO. Chương trình được thực thi đầu tiên sẽ được hiển thị cuối cùng và được đóng.
- LRU: Thuật toán thay thế trang chưa được sử dụng lâu nhất. Ứng dụng "Kết thúc ứng dụng" để đóng các ứng dụng ít được sử dụng và đã cũ cũng tương tự như thuật toán LRU.
- LFU: Thuật toán thay thế trang có số lần tham chiếu ít nhất. Ví dụ: Chức năng "Đóng tab" trong trình duyệt web đóng tab được mở gần đây nhất và được sử dụng ít nhất cũng tương tự như thuật toán LFU.
- MFU: Thuật toán thay thế trang có số lần tham chiếu nhiều nhất. Thuật toán MFU hiếm khi được sử dụng.
[Quá trình và luồng]
- Quá trình: Đơn vị công việc thực thi được phân bổ từ hệ điều hành, có nghĩa là chương trình. Khi nhiều quá trình được thực thi đồng thời, mỗi quá trình sẽ được phân bổ bộ nhớ và CPU độc lập.
- Luồng: Đơn vị thực thi hoạt động trong quá trình, chia sẻ tài nguyên được phân bổ cho quá trình và được thực thi. Ví dụ: Mỗi tab trong trình duyệt web hoạt động như một luồng chứ không phải là một quá trình.
[OSI 7Layer]
- Lớp ứng dụng: Lớp kết nối người dùng với mạng, bao gồm các giao thức như HTTP, FTP, SMTP.
- Lớp trình bày: Lớp định nghĩa cách thức biểu diễn dữ liệu, bao gồm các giao thức như JPEG, MPEG, SSL.
- Lớp phiên: Lớp quản lý phiên giữa hai hệ thống đang giao tiếp.
- Lớp truyền tải: Lớp chịu trách nhiệm truyền dữ liệu, bao gồm các giao thức như TCP, UDP.
- Lớp mạng: Lớp thiết lập đường dẫn để truyền dữ liệu, bao gồm các giao thức như IP, ICMP.
- Lớp liên kết dữ liệu: Lớp truyền dữ liệu dựa trên địa chỉ vật lý (địa chỉ MAC), bao gồm các giao thức như Ethernet, Token Ring.
- Lớp vật lý: Lớp chịu trách nhiệm truyền thông về kết nối vật lý và phương tiện truyền thông.
[TCP và UDP]
- TCP: Dịch vụ định hướng kết nối, cách thức truyền dữ liệu đáng tin cậy. Thiết lập hoặc hủy kết nối bằng cách sử dụng phương thức 3-way handshaking và 4-way handshaking. Ví dụ: Khi đăng nhập vào trang web hoặc truyền tệp, bạn sẽ sử dụng TCP.
- UDP: Dịch vụ không định hướng kết nối, không qua các thủ tục tín hiệu để truyền dữ liệu, độ tin cậy của dữ liệu thấp nhưng tốc độ xử lý nhanh. Ví dụ: Trong phát trực tuyến video hoặc trò chơi trực tuyến, truyền tải nhanh là rất quan trọng nên sử dụng UDP.