50 câu hỏi và câu trả lời phỏng vấn kỹ thuật phần mềm
Câu hỏi và câu trả lời phỏng vấn nhà phát triển phần mềm dành cho người mới
1) Các loại phần mềm quan trọng là gì?
- Phần mềm hệ thống
- Phần mềm ứng dụng
- Phần mềm nhúng
- Ứng dụng web
- Phần mềm trí tuệ nhân tạo
- Phần mềm khoa học.
👉 Tải xuống bản PDF miễn phí: Câu hỏi và câu trả lời phỏng vấn kỹ thuật phần mềm
2) Sự khác biệt chính giữa chương trình máy tính và phần mềm máy tính là gì?
Một chương trình máy tính là một đoạn mã lập trình. Nó thực hiện một nhiệm vụ được xác định rõ ràng. Mặt khác, phần mềm bao gồm mã lập trình, tài liệu và hướng dẫn sử dụng.
3) Tái kỹ nghệ phần mềm là gì?
Đó là một quá trình phát triển phần mềm được thực hiện để cải thiện khả năng bảo trì của hệ thống phần mềm.
4) Mô tả ngắn gọn quá trình phát triển phần mềm:
Quá trình phát triển phần mềm là một vòng đời bao gồm các giai đoạn sau:
- Phân tích yêu cầu
- Đặc điểm kỹ thuật
- Kiến trúc phần mềm
- Triển khai hệ thống
- Kiểm tra
- Tài liệu
- Đào tạo và hỗ trợ
- Bảo trì
5) Có những mẫu SDLC nào?
Mô hình thác nước, Mô hình xoắn ốc, Mô hình túi lớn, Mô hình lặp và Mô hình chữ V là một số mô hình nổi tiếng mô hình SDLC.
6) Xác minh và xác nhận là gì?
Xác minh:
Xác minh là một thuật ngữ đề cập đến tập hợp các hoạt động nhằm đảm bảo rằng phần mềm thực hiện một chức năng cụ thể.
Xác nhận:
Nó đề cập đến tập hợp các hoạt động đảm bảo rằng phần mềm được xây dựng theo nhu cầu của khách hàng.
7) Trong quá trình phát triển phần mềm, ý nghĩa của việc gỡ lỗi là gì?
Gỡ lỗi là quá trình dẫn đến việc loại bỏ lỗi. Đây là một phần rất quan trọng của thử nghiệm thành công.
8) Làm thế nào bạn có thể đảm bảo rằng mã của bạn vừa an toàn vừa nhanh chóng?
Trong phần mềm, bảo mật phát triển luôn là ưu tiên hàng đầu. Vì vậy, nếu việc thực hiện chương trình chậm, tôi sẽ cố gắng xác định lý do theo cách làm tăng độ phức tạp về thời gian của nó.
9) Kể tên hai công cụ được sử dụng để theo dõi yêu cầu phần mềm?
Có nhiều cách để theo dõi các yêu cầu.
Hai thường được sử dụng là:
- Tạo một tài liệu đặc tả yêu cầu để liệt kê tất cả các yêu cầu.
- Tạo một bảng excel liệt kê các yêu cầu, loại, sự phụ thuộc, mức độ ưu tiên, v.v.
10) Sự khác biệt chính giữa stub và mock là gì?
Sơ khai là một triển khai tối thiểu của một giao diện thường trả về dữ liệu được mã hóa cứng trong khi mô hình giả thường xác minh kết quả đầu ra so với mong đợi. Những kỳ vọng đó được đặt ra trong bài kiểm tra.
11) Bạn thích viết thuật toán lập trình bằng ngôn ngữ nào?
Mọi nhà phát triển đều có quan điểm của họ khi lựa chọn ngôn ngữ lập trình. Tuy nhiên, người ta nên thích các ngôn ngữ cấp cao hơn vì chúng năng động. Giống như C và C++ ngôn ngữ.
12) Phần mềm máy tính là gì?
Phần mềm máy tính là một gói bao gồm chương trình phần mềm, tài liệu và hướng dẫn sử dụng phần mềm.
13) Theo bạn model SDLC nào là tốt nhất?
Không có thứ hạng nào như vậy vì Mô hình SDLC được áp dụng theo nhu cầu của quá trình phát triển. Nó có thể khác nhau giữa các phần mềm.
14) Người quản lý dự án phần mềm là ai? Vai trò của anh ấy là gì?
Người quản lý dự án phần mềm là người chịu trách nhiệm quản lý dự án phát triển phần mềm.
Người quản lý dự án đang thực hiện việc lập kế hoạch dự án, theo dõi tiến độ, liên lạc. Người đó cũng quản lý rủi ro và nguồn lực để thực hiện dự án trong thời gian, chi phí và chất lượng hạn chế.
15) Phạm vi phần mềm nghĩa là gì?
Phạm vi phần mềm là một ranh giới được xác định rõ ràng. Nó bao gồm tất cả các loại hoạt động được thực hiện để phát triển và cung cấp sản phẩm phần mềm.
Phạm vi phần mềm xác định tất cả các chức năng và tạo phẩm sẽ được phân phối như một phần của phần mềm. Phạm vi cũng xác định sản phẩm sẽ làm gì? Phần nào không phải là một phần của dự án? Dự toán dự án là gì?
Quá trình này rất hữu ích để ước tính các khía cạnh khác nhau của sản phẩm phần mềm. Ước tính này có thể được quyết định bằng cách tham khảo ý kiến của các chuyên gia hoặc bằng cách sử dụng các công thức được xác định trước.
16) Làm thế nào để tìm kích thước của một sản phẩm phần mềm?
Kích thước của sản phẩm phần mềm có thể được tính toán bằng hai phương pháp sau
- Đếm dòng mã được giao
- Đếm điểm chức năng được giao
17) Điểm chức năng là gì?
Điểm chức năng là các tính năng được cung cấp bởi sản phẩm phần mềm. Nó được coi là thước đo quan trọng nhất đối với kích thước phần mềm.
18) Có những kỹ thuật ước lượng dự án phần mềm nào?
Các phương pháp ước lượng được sử dụng rộng rãi nhất là:
- Kỹ thuật phân hủy
- Kỹ thuật thực nghiệm
19) Quản lý cấu hình phần mềm là gì?
Quản lý cấu hình phần mềm là quá trình theo dõi và kiểm soát những thay đổi xảy ra trong phần mềm.
Kiểm soát thay đổi là chức năng đảm bảo rằng tất cả các thay đổi được thực hiện trong hệ thống phần mềm đều nhất quán và được tạo bằng các quy tắc và quy định của tổ chức.
20) Bạn có thể đo lường việc thực hiện dự án bằng cách nào?
Chúng tôi có thể đo lường việc thực hiện dự án bằng cách sử dụng Giám sát hoạt động, Báo cáo trạng thái và Danh sách kiểm tra cột mốc.
21) Hãy cho tôi biết về một số công cụ quản lý dự án.
Có nhiều loại công cụ quản lý được sử dụng tùy theo nhu cầu của một dự án phần mềm. Một số trong số đó là Biểu đồ Pert, Biểu đồ Gantt, Biểu đồ tài nguyên, Báo cáo trạng thái, v.v.
22) Yêu cầu phần mềm là gì?
Yêu cầu phần mềm là sự mô tả chức năng của hệ thống phần mềm được đề xuất. Nó được coi là mô tả của hệ thống đích, các chức năng và tính năng của nó.
23) Nghiên cứu khả thi là gì?
Đó là thước đo để tìm hiểu xem việc phát triển dự án phần mềm sẽ mang lại lợi ích thiết thực và hữu ích như thế nào cho tổ chức. Người phân tích phần mềm tiến hành nghiên cứu để biết tính khả thi về kinh tế, kỹ thuật và vận hành của dự án.
- Thuộc kinh tế: Nó bao gồm chi phí đào tạo, chi phí bổ sung và các công cụ cũng như ước tính tổng thể về chi phí và lợi ích của dự án.
- kỹ thuật: Nó đánh giá khía cạnh kỹ thuật. Có thể phát triển hệ thống này không? Đánh giá sự phù hợp của (các) máy và hệ điều hành mà phần mềm sẽ thực thi, kiến thức về phát triển phần mềm và các công cụ có sẵn cho dự án này.
- Operanói: Ở đây, nhà phân tích cần đánh giá rằng tổ chức sẽ có thể điều chỉnh suôn sẻ với những thay đổi được thực hiện theo nhu cầu của dự án. Vấn đề có đáng giải quyết với chi phí ước tính không?
Sau khi nghiên cứu tất cả những điều này, báo cáo khả thi cuối cùng sẽ được tạo ra.
24) Yêu cầu chức năng và phi chức năng là gì?
Yêu cầu chức năng là các tính năng chức năng được người dùng mong đợi từ sản phẩm phần mềm được đề xuất.
Các yêu cầu phi chức năng liên quan đến bảo mật, hiệu suất, giao diện và cảm nhận của giao diện người dùng.
25) Số liệu phần mềm là gì?
Số liệu phần mềm cung cấp các thước đo cho các khía cạnh khác nhau của quy trình phần mềm được chia thành:
- Số liệu yêu cầu: Yêu cầu về độ dài, tính đầy đủ
- Số liệu sản phẩm: Số lượng dòng mã hóa, số liệu hướng đối tượng, số liệu thiết kế và thử nghiệm.
26) Mô-đun hóa là gì?
Mô-đun hóa là một kỹ thuật được sử dụng để chia hệ thống phần mềm thành nhiều mô-đun riêng biệt khác nhau. Đó là dự kiến sẽ thực hiện các nhiệm vụ một cách độc lập.
27) Sự gắn kết là gì?
Sự gắn kết là thước đo xác định độ tin cậy nội bộ giữa các thành phần của mô-đun.
28) Kể tên một số công cụ phân tích & thiết kế phần mềm?
Một số công cụ phân tích và thiết kế phần mềm quan trọng nhất là:
- Sơ đồ luồng dữ liệu
- Biểu đồ có cấu trúc
- Tiếng Anh có cấu trúc
- Từ điển dữ liệu
- Biểu đồ đầu vào quy trình đầu ra phân cấp
- Sơ đồ mối quan hệ thực thể và bảng quyết định
29) Sơ đồ luồng dữ liệu cấp 0 có ý nghĩa gì?
Mức trừu tượng cao nhất được gọi là Cấp 0 của DFD. Nó còn được gọi là DFD cấp độ ngữ cảnh. Nó miêu tả toàn bộ hệ thống thông tin dưới dạng một sơ đồ.
30) Sự khác biệt chính giữa tiếng Anh có cấu trúc và Mã giả là gì?
Tiếng Anh cấu trúc là tiếng Anh bản địa. Nó được sử dụng để viết cấu trúc của một module chương trình. Nó sử dụng các từ khóa ngôn ngữ lập trình. Mặt khác, Mã giả giống ngôn ngữ lập trình hơn mà không có cú pháp của bất kỳ ngôn ngữ cụ thể nào.
Câu hỏi và câu trả lời về Kỹ thuật phần mềm viva dành cho người có kinh nghiệm
31) Thiết kế có cấu trúc là gì?
Thiết kế có cấu trúc là sự khái niệm hóa vấn đề. Nó còn được gọi là thiết kế giải pháp và dựa trên chiến lược 'chia để trị'.
32) Lập trình chức năng là gì?
Nó là một phương pháp lập trình sử dụng các khái niệm của hàm toán học. Nó cung cấp các phương tiện tính toán dưới dạng các hàm toán học, đồng thời tạo ra kết quả bất kể trạng thái chương trình.
33) Đảm bảo chất lượng và kiểm soát chất lượng là gì?
Đảm bảo chất lượng kiểm tra xem quy trình phù hợp có được tuân thủ trong khi phát triển phần mềm hay không trong khi Kiểm soát chất lượng liên quan đến việc duy trì chất lượng của sản phẩm phần mềm.
34) Công cụ CASE là gì?
CASE có nghĩa là Máy tính hỗ trợ Kỹ thuật phần mềm. Chúng là tập hợp các chương trình ứng dụng phần mềm tự động, được sử dụng để hỗ trợ, nâng cao và củng cố các hoạt động SDLC.
35) Mô hình quy trình nào loại bỏ lỗi trước khi phần mềm gặp sự cố?
Phương pháp kỹ thuật phần mềm phòng sạch sẽ loại bỏ các khiếm khuyết trước khi phần mềm gặp sự cố.
36) Giải quyết vấn đề này
Có hai mươi chiếc tất khác nhau thuộc hai loại trong một ngăn kéo trong một căn phòng tối. Bạn cần mang theo số lượng tất tối thiểu là bao nhiêu để đảm bảo có được một đôi phù hợp?”
Nếu bạn nhặt được ba chiếc tất, chúng có thể cùng loại dù tỷ lệ cược là 50%. Tỷ lệ cược không bao giờ là một thực tế như nhau. Vì vậy, cách duy nhất để 'đảm bảo bạn có một cặp phù hợp' là nhặt được ít nhất 11 số cú sốc.
37) Làm thế nào bạn có thể đảm bảo rằng mã viết của bạn có thể xử lý được nhiều loại tình huống lỗi khác nhau?
Tôi có thể viết các bài kiểm tra xác định các tình huống lỗi có thể xảy ra.
38) Giải thích sự khác biệt giữa Thread và Process?
Một tiến trình là một thể hiện của chương trình máy tính. Trong một chương trình có thể có một hoặc nhiều luồng.
39) Hãy cho tôi biết sự khác biệt giữa EXE và DLL?
Exe là một chương trình thực thi trong khi DLL là một tệp có thể được các chương trình tải và thực thi một cách linh hoạt. Nó là một kho lưu trữ mã bên ngoài cho các chương trình. Vì cả hai đều là các chương trình khác nhau nên hãy sử dụng lại cùng một DLL thay vì có mã đó trong tệp của chúng. Nó cũng làm giảm không gian lưu trữ cần thiết.
40) Thế nào là gõ mạnh và gõ yếu? Cái nào được ưu tiên? Tại sao?
Gõ mạnh kiểm tra các loại biến tại thời điểm biên dịch. Mặt khác, kiểu gõ yếu sẽ kiểm tra các loại hệ thống trong thời gian chạy. Trong số đó, Strong gõ luôn được ưu tiên hơn vì nó giảm thiểu lỗi.
41) Mô tả sự khác biệt giữa lập trình hướng giao diện, hướng đối tượng và hướng khía cạnh.
- Lập trình giao diện dựa trên hợp đồng.
- Hướng đối tượng là một cách để viết các đối tượng chi tiết có một mục đích duy nhất.
- Lập trình hướng theo khía cạnh là tách biệt mã theo cách mà các đối tượng khác nhau thực hiện các nhiệm vụ chính và các nhiệm vụ phụ được thực hiện bởi các đối tượng độc lập.
42) Tại sao sử dụng tính năng bắt (ngoại lệ) luôn là một ý tưởng tồi?
Đó là một ý tưởng tồi bởi vì:
- Vì không có biến nào được xác định nên không thể đọc được ngoại lệ
- Thật tốt khi sử dụng một ngoại lệ khi bạn đã biết các loại ngoại lệ.
43) Loại dữ liệu nào được truyền qua Tiêu đề HTTP?
Tập lệnh và siêu dữ liệu được truyền qua tiêu đề HTTP.
44) Bạn ưu tiên các yêu cầu như thế nào?
Đầu tiên, bạn cần thiết kế một hệ thống bằng cách đánh giá cấu trúc dữ liệu. Sau đó, bạn nên chuyển sang cấu trúc mã cần thiết để hỗ trợ nó.
45) Hãy cho tôi biết sự khác biệt giữa thiết kế hướng đối tượng và thiết kế dựa trên thành phần?
Thiết kế hướng đối tượng có thể dễ dàng được gói gọn ở một mức độ nào đó trong thiết kế dựa trên thành phần.
46) Khi nào bạn sử dụng tính đa hình?
Đa hình được sử dụng khi có nhu cầu ghi đè chức năng khi kế thừa lớp. Đó là về các lớp học chung và hợp đồng chung.
47) Sự khác biệt giữa ngăn xếp và hàng đợi là gì?
- Hàng đợi luôn vào trước, ra trước
- Ngăn xếp luôn vào sau, ra trước
48) Điều gì cần thiết để kiểm tra chất lượng của mã?
Theo tôi, khung kiểm thử đơn vị là điều cần thiết để kiểm tra chất lượng mã.
49) Bạn có nghĩ rằng việc bảo trì phần mềm tốn kém không?
Theo tôi, việc bảo trì phần mềm sẽ không bao giờ tốn kém nếu chúng ta sử dụng quy trình phát triển phù hợp.
50) Hãy cho tôi biết sự khác biệt giữa thẻ và nhánh?
Thẻ dành cho các bản phát hành phiên bản là nơi lưu giữ tạm thời để thực hiện những việc đó. Tuy nhiên, các nhánh sẽ bị xóa khi những thay đổi đó được hợp nhất vào thân cây.
51) Biến cấp độ lớp được bảo vệ có sẵn ở đâu?
Các biến cấp độ lớp được bảo vệ có sẵn cho bất kỳ lớp con nào bắt nguồn từ lớp cơ sở.
52) Có thể thực thi nhiều khối bắt cho một câu lệnh thử không?
Đúng. Nhiều khối bắt có thể được thực thi cho một câu lệnh thử.
53) Khi nào bạn cần khai báo một lớp là trừu tượng?
Chúng ta nên khai báo một lớp là trừu tượng trong các trường hợp sau:
- Khi lớp được kế thừa từ một lớp trừu tượng, nhưng không phải tất cả các phương thức trừu tượng đều bị ghi đè.
- Trong trường hợp tối thiểu một trong các phương thức trong lớp được khai báo là trừu tượng.
54) Phát triển thuật toán xuất vị trí hiện tại của bạn và danh sách các vị trí ATM trong khu vực đó. Giúp bạn có được các máy ATM K gần nhất với vị trí của bạn.
Tạo một phương thức getDistance(a, b) để tính khoảng cách giữa a và b.
Mã Code:
import java.util.HashMap;
import java.util.Map;
import java.util.PriorityQueue;
public class PrioRQueueExample {
public static void main(String[] args){
PriorityQueue<Double> pq = new PriorityQueue<Double>((x,y)-> {Double z = y-x;return z.intValue(); });
PrioRQueueExample pqe = new PrioRQueueExample();
//Number of ATMs to return i.e. K
int num_ATMs = 3;
double curr_loc = 0.00;
Map<String,Double> nallATMLocs = new HashMap<String,Double>();
//Map of ATM names and their distance co-ordinates
nallATMLocs.put("atm1",45.0);
nallATMLocs.put("atm2",78.0);
nallATMLocs.put("atm3",54.0);
nallATMLocs.put("atm4",64.0);
nallATMLocs.put("atm5",35.0);
nallATMLocs.put("atm6",42.0);
nallATMLocs.put("atm7",57.0);
nallATMLocs.put("atm7",1.00);
nallATMLocs.forEach((atm,dist) ->{if(pq.size() < num_ATMs){
pq.add(pqe.getLocation(curr_loc,dist));}
else{
if( pq.peek() > pqe.getLocation(curr_loc,dist)){
pq.poll();
pq.add(pqe.getLocation(curr_loc,dist));
}
}
});
pq.forEach(atmLoc -> System.out.println(atmLoc));
}
private double getLocation(double curr,double atm){
return atm - curr;
}
}
Những câu hỏi phỏng vấn này cũng sẽ giúp ích cho bài thi viva(orals) của bạn

