Linux là một hệ điều hành không xa lạ gì với các lập trình viên, nhất là các vị trí thường xuyên thao tác với hệ thống (System). Thành thạo Linux là một yêu cầu mà nhiều nhà tuyển dụng bắt buộc khi phỏng vấn lập trình viên, vì thế để chuẩn bị tốt cho buổi phỏng vấn của mình, chúng ta cùng nhau tìm hiểu top 10 câu hỏi thường gặp liên quan đến hệ điều hành Linux này nhé.
Câu 1: Hệ điều hành mã nguồn mở là gì?
Mã nguồn mở (open-source) là thuật ngữ chung đề cập đến các phần mềm và ứng dụng chạy trên thiết bị máy tính mà cho phép người dùng có thể sử dụng, xem và tùy chọn sửa đổi các mã nguồn (source code). Hệ điều hành mã nguồn mở (Open-Source Operating System) là những hệ điều hành cho phép cá nhân hay tổ chức được phép can thiệp vào sâu bên trong để tùy biến và sử dụng với các mục đích khác nhau mà không thu phí.
Một số hệ điều hành mã nguồn mở hiện nay như Linux (cha đẻ của những Ubuntu, Fedora, Android,…) Open Solaris, Free BSD. Ngược lại với hệ điều hành mã nguồn mở là hệ điều hành đóng như iOS, macOS của Apple hay Windows của Microsoft.
Câu 2: Linux là gì?
Linux là một họ các hệ điều hành tự do mã nguồn mở dựa trên Linux kernel (hạt nhân Linux). Linux được phát hành lần đầu vào năm 1991, bản phát hành bao gồm nhân Linux (kernel), các thư viện và phần mềm hệ thống hỗ trợ.
Từ bản phát hành của Linux, nhiều hệ điều hành dựa trên Linux ra đời và trở nên phổ biến như Ubuntu, Debian hay Fedora. Android – hệ điều hành phổ biến chạy trên các smartphone hiện nay cũng là một hệ điều hành dựa trên nền tảng Linux. Ngoài ra Linux cũng chạy được trên các hệ thống nhúng, từ đó mà các thiết bị điện tử khác như Tivi, máy quay, các thiết bị điện trong smarphone,… cũng đang được chạy phần mềm hoạt động trên nền tảng Linux.
Câu 3: Nêu những ưu điểm của Linux
Ngoài việc là một hệ điều hành mã nguồn mở, hoàn toàn miễn phí thì Linux còn nhiều ưu điểm đáng để sử dụng:
- Tính tùy biến cao: bạn có thể dễ dàng thay đổi, tùy biến Linux theo nhu cầu và mục đích sử dụng của mình hay thậm chí tạo ra một hệ điều hành mới của riêng bạn bằng cách sử dụng Linux.
- Tính tương thích cao: Linux có thể chạy trên hầu hết các thiết bị phần cứng đến từ Intel, IBM,… Các trình điều khiển thiết bị (driver) cũng được cộng đồng hỗ trợ phát triển để có thể sử dụng tốt trên nền tảng Linux.
- Hiệu suất cao: Hệ điều hành Linux được tối giản giúp nó nhẹ, ít các ứng dụng đi kèm, nhờ vậy mang lại hiệu năng sử dụng cao. Việc cài đặt Linux cũng đòi hỏi cấu hình phần cứng thấp, nhờ vậy các máy tính cũ, cấu hình yếu vẫn có thể chạy tốt khi dùng hệ điều hành này.
- Tính bảo mật cao: Linux mã nguồn mở nên bất cứ ai cũng có thể đào sâu vào hệ điều hành để đảm bảo rằng nó không có lỗi hay các back door. Nhờ cộng đồng hỗ trợ mà Linux có ít lỗ hổng hơn so với các hệ điều hành đóng khác.
Câu 4: Các thành phần cơ bản của Linux
Linux có 4 thành phần cơ bản sau:
- Kernel: phần nhân – là phần cốt lõi của hệ điều hành, chịu trách nhiệm cho tất cả các hoạt động từ quản lý thiết bị, bộ nhớ, quy trình và xử lý các lệnh gọi hệ thống.
- Thư viện hệ thống: System Libraries là các chương trình giúp truy cập các tính năng của Kernel
- Công cụ hệ thống: System Tools là tập hợp các công cụ tiện ích, thường là các lệnh đơn giản giúp người dùng truy cập file, thao tác với thư mục, với dữ liệu,…
- Công cụ phát triển: Development Tools là những công cụ và thư viện bổ sung giúp các lập trình viên tạo ra các ứng dụng hoạt động trên Linux.
Câu 5: Linux Shell là gì?
Linux Shell là một chương trình cung cấp giao diện dành cho người dùng để sử dụng các dịch vụ hệ điều hành. Shell nhận các lệnh mà người dùng nhập vào, đọc và thực hiện chuyển đổi chúng thành thứ mà Kernel (nhân Linux) có thể hiểu được.
Để làm được điều này thì Shell được trang bị một trình thông dịch để thực thi các lệnh mà người dùng nhập vào. Shell được chia thành 2 loại:
- Command Line Shell: người dùng sử dụng Terminal để thực hiện việc nhập lệnh để shell thực thi, kết quả cũng trả về trực tiếp trên Terminal. Các lệnh được quy định sẵn trong Shell và người dùng bắt buộc phải nhớ chúng
- Graphical Shells: Linux cung cấp một số Shell thao tác trên GUI (graphical user interface) như đóng mở cửa sổ, hiển thị thông số dưới dạng biểu đồ,…
Câu 6: Root là gì? Có các loại chủ sở hữu nào trong Linux?
Root là tên người sử dụng (tài khoản) mặc định có quyền truy cập vào tất cả các lệnh và file trên Linux. Quyền Root dùng để chỉ quyền hạn mà tài khoản root có trên hệ thống, đây là đặc quyền lớn nhất trên hệ thống, có quyền tuyệt đối thao tác với dữ liệu, file, thư mục; ngoài ra còn có quyền cấp và thu hồi quyền truy cập đối với các tài khoản user khác trên hệ thống.
Trong Linux, có 3 loại chủ sở hữu (ownership) được gắn lên mỗi file và thư mục bao gồm:
- User: Khi người dùng tạo ra file hay folder thì sẽ trở thành chủ sở hữu của file, folder đó
- Group: một group bao gồm nhiều User có cùng quyền truy cập vào một file hay thư mục. Group sử dụng khi bạn muốn chia sẻ dữ liệu cho một nhóm những người dùng chung và cùng muốn set giá trị quyền truy cập, thao tác, chỉnh sửa lên dữ liệu
- Other: dùng để chỉ bất kỳ người dùng nào không thuộc 2 đối tượng trên.
Linux quy định 3 chủ sở hữu trên để phân quyền và kiểm soát hành vi của người dùng.
Câu 7: Permissions trong Linux. Làm sao để thay đổi quyền của file hay thư mục trong Linux?
Permissions hay quyền giúp kiểm soát hành vi của người dùng trong Linux. Mỗi file hay thư mục trong Linux đều có 3 quyền: đọc, ghi và thực thi. Cụ thể là:
- Quyền đọc: ký hiệu là r – Read cho phép mở file, đọc file; xem danh sách thư mục và file chứa trong 1 thư mục
- Quyền ghi: ký hiệu là w – Write cho phép sửa nội dung file; thêm, xóa hay đổi tên các file trong thư mục
- Quyền thực thi: ký hiệu là x – Execute cho phép chạy file
- Trường hợp không có quyền nào thì Linux sẽ hiển thị ký hiệu –
Để xem được quyền của file hay thư mục, chúng ta sử dụng lệnh: “ls – l”
Để thay đổi quyền truy cập vào 1 file hay folder chúng ta sử dụng lệnh: “chmod <permissions-number> <filename>”. Trong đó permissions-number sẽ có 3 chữ số với ý nghĩa lần lượt từ trái sang phải là quyền của user, quyền của group và quyền của others.
Câu 8: Trình soạn thảo Vi trong Linux
Trình soạn thảo Vi là một trong những cách phổ biến nhất để người dùng thao tác chỉnh sửa nội dung file trong Linux, nó được ưu chuộng bởi việc nhẹ, chiếm ít tài nguyên và mặc định có sẵn trong các hệ điều hành Linux. Phiên bản nâng cấp của Vi là Vim – Vi Improved. Một số lệnh cơ bản khi thao tác với Vi
- Chế độ soạn thảo: Vi cung cấp 2 chế độ, chạy command để người dùng thao tác các lệnh tìm kiếm, thay thế, xóa,… và chế độ nhập văn bản (insert mode) thao tác trực tiếp với nội dung file. Để chuyển đổi giữa 2 chế độ chúng ta sử dụng phím i, a, o hoặc Insert để nhập văn bản và Esc để về chế độ command
- vi <filename> cho việc mở file nếu đã tồn tại, hoặc tạo mới nếu file chưa tồn tại và mở nó lên
- :q cho việc thoát chế độ văn bản, nếu muốn thoát mà không lưu chúng ta thêm !
- :w cho việc lưu file. Để lưu và thoát chúng ta kết hợp :wq
- yy cho việc sao chép dòng hiện tại, p cho việc dán bản sao vào vị trí con trỏ, dd thực hiện việc xóa dòng
Câu 9: stdin, stdout, stderr là gì?
Stdin, stdout và stderr là ba luồng dữ liệu được tạo khi bạn khởi chạy một lệnh trong Linux, trong đó:
- stdin là dòng đầu vào tiêu chuẩn
- stdout là dòng đầu ra tiêu chuẩn
- stderr là dòng báo lỗi tiêu chuẩn
Nói cách khác chúng ta có 1 luồng đầu vào và 2 luồng đầu ra. Mặc định khi chạy chương trình thì kết quả sẽ được hiện ra ở 2 nơi stdout và stderr; để có thể dễ dàng kiểm tra cũng như xử lý các tiến trình tiếp theo thì chúng ta thường sử dụng kỹ thuật trong bash Linux để gửi 2 kết quả đầu ra trên về cùng 1 nơi nào đó, ví dụ như lưu vào 1 file. Kỹ thuật này gọi là sự chuyển hướng câu lệnh.
Câu 10: Những phiên bản phổ biến nhất của hệ điều hành Linux
- Red Hat Enterprise Linux: được sử dụng chủ yếu bởi các tổ chức có yêu cầu tính bảo mật cao như cơ quan, tổ chức nhà nước
- CentOS: hệ điều hành cho các server và hoàn toàn miễn phí, đây cũng là 1 bản phân phối miễn phí của Red Hat, vì thế nó được đánh giá cao nhờ mức độ bảo mật
- Fedora: cũng là một phiên bản được tài trợ bởi Red Hat, nó được dùng để kiểm tra các tính năng mới trước khi được thương mại hóa của Red Hat Enterprise Linux
- Debian Linux: bản phân phối miễn phí của Linux, chúng ta có thể dùng để tham khảo source code hay tùy biến để thương mại hóa hoàn toàn hợp pháp
- Ubuntu: được xem là Windows của Linux, dễ sử dụng, tương đối đầy đủ các phần mềm và công cụ với hiệu năng ổn đáp ứng nhu cầu của người dùng.
Kết bài
Trên đây là top 10 câu hỏi liên quan đến hệ điều hành Linux mà bạn có thể bắt gặp trong buổi phỏng vấn của mình. Nếu đi sâu vào hệ điều hành Linux, sẽ có rất nhiều kiến thức chuyên sâu mà bạn cần chuẩn bị thêm, liên quan đến phần nhân và cách hệ điều hành hoạt động. Hy vọng bài viết này hữu ích dành cho các bạn có cái nhìn tổng quan về Linux và chuẩn bị thật tốt cho buổi phỏng vấn sắp tới. Hẹn gặp lại các bạn trong các bài viết tiếp theo của mình.
Bài viết được đăng trên blog TopDev: https://topdev.vn/blog/top-10-cau-hoi-phong-van-linux/