50 câu hỏi và câu trả lời phỏng vấn về kỹ thuật phần mềm hàng đầu

Anonim

tải PDF

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.

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ì?

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 thiết kế phần mềm là gì?

Nó 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 một hệ thống phần mềm.

4) Mô tả ngắn gọn quy 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
  • Sự chỉ rõ
  • Kiến trúc phần mềm
  • Thực hiện
  • Thử nghiệm
  • Tài liệu
  • Đào tạo và hỗ trợ
  • Bảo trì

5) Các mô hình SDLC có sẵn là gì?

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 lại và Mô hình chữ V là một số mô hình SDLC nổi tiếng.

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 đảm bảo rằng phần mềm thực hiện một chức năng cụ thể.

Thẩm định:

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. Nó 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 được đặt lên hàng đầu. Vì vậy, nếu việc thực thi chương trình chậm sau đó, tôi sẽ cố gắng xác định lý do cho sự 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 các 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à:

  • Lập 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 trang tính excel danh sách dưới dạng yêu cầu, loại, phụ thuộc, mức độ ưu tiên, v.v.

10) Sự khác biệt chính giữa sơ khai và giả 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 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 nói đến các lựa chọn ngôn ngữ lập trình. Mặc dù vậy, người ta nên thích các ngôn ngữ cấp cao hơn vì chúng rất năng động. Giống như ngôn ngữ C và C ++.

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 của nó và hướng dẫn sử dụng về cách sử dụng phần mềm.

13) Theo bạn mô hình SDLC nào là tốt nhất?

Ở đó, không có xếp hạng như vậy, vì Mô hình SDLC được chấp nhận theo nhu cầu của quá trình phát triển. Nó có thể khác nhau giữa phần mềm và phần mềm.

14) Người quản lý dự án phần mềm là ai? Vai trò của anh ta 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 lập kế hoạch dự án, theo dõi tiến độ, giao tiếp. 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.

15) Phạm vi phần mềm có 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à hiện vật được phân phối như một phần của phần mềm. Phạm vi cũng xác định những gì sản phẩm sẽ làm? Điều gì 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. Việc ước tính này có thể được quyết định hoặc tham khảo ý kiến ​​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 bằng hai phương pháp sau

  • Đếm các dòng mã được phân phối
  • Đếm điểm chức năng đã phân phối

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à một phép đo quan trọng nhất cho kích thước phần mềm.

18) Các kỹ thuật ước lượng dự án phần mềm có sẵn là gì?

Các kỹ thuật ước tính đượ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à một quá trình theo dõi và kiểm soát các thay đổi xảy ra trong phần mềm.

Kiểm soát thay đổi là một 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 là nhất quán và được tạo ra bằng cách sử dụng các quy tắc và quy định của tổ chức.

20) Làm thế nào bạn có thể đo lường việc thực hiện dự án?

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 quan trọng.

21) 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à một mô tả chức năng của một hệ thống phần mềm được đề xuất. Nó được giả định 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ì?

Nó là một thước đo để tìm ra mức độ thực tế và lợi ích của việc phát triển dự án phần mềm sẽ chứng minh cho tổ chức. Bộ 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à hoạt động của dự án.

  1. Kinh tế: Nó bao gồm chi phí đào tạo, chi phí bổ sung và công cụ và ước tính tổng thể về chi phí và lợi ích của dự án.

  2. 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á tính 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.

  3. Hoạt động: Ở đây nhà phân tích cần đánh giá rằng tổ chức sẽ có thể điều chỉnh một cách trơn tru những thay đổi được thực hiện theo yêu 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 đượ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ì?

Phần mềm Metrics đưa ra 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:

  1. Các chỉ số yêu cầu: Yêu cầu về độ dài, tính đầy đủ
  2. Số liệu sản phẩm: Số 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 để phân chia một hệ thống phần mềm thành các mô-đun kín đáo khác nhau. Điều đó được mong đợi để 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à một thước đo xác định độ tin cậy nội bộ giữa các phần tử của mô-đun.

28) Đề cập đến một số công cụ phân tích & thiết kế phần mềm?

Một số công cụ thiết kế và phân tích 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
  • Sơ đồ đầu ra quy trình đầu vào phân cấp
  • Sơ đồ mối quan hệ thực thể và bảng quyết định

29) Ý nghĩa của sơ đồ luồng dữ liệu mức-0 là gì?

Mức trừu tượng cao nhất được gọi là Mức 0 của DFD. Nó còn được gọi là DFD mức ngữ cảnh. Nó mô 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à Pseudo Code là gì?

Tiếng Anh có cấu trúc là ngôn ngữ tiếng Anh mẹ đẻ. Nó được sử dụng để viết cấu trúc của một mô-đun chương trình. Nó sử dụng các từ khóa của ngôn ngữ lập trình. Mặt khác, Pseudo Code giống với 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.

31) Thiết kế có cấu trúc là gì?

Thiết kế có cấu trúc là một khái niệm hóa vấn đề. Nó còn được gọi là thiết kế giải pháp 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 một hàm toán học. Nó cung cấp các phương tiện tính toán như các hàm toán học, cũng 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 so với 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 tuân thủ trong khi phát triển phần mềm trong khi Kiểm soát chất lượng đề cập đến việc duy trì chất lượng của sản phẩm phần mềm.

34) Các công cụ CASE là gì?

CASE có nghĩa là Kỹ thuật Phần mềm Hỗ trợ Máy tính. Chúng là một 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ỏ các khiếm khuyết 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 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. Số lượng tất tối thiểu bạn cần mang để đảm bảo bạn có một đôi phù hợp là bao nhiêu? "

Nếu bạn nhặt được ba chiếc tất, chúng có thể cùng loại ngay cả khi tỷ lệ cược là 50%. Tỷ lệ cược không bao giờ là một thực tế bình đẳng. Do đó, cách duy nhất để 'đảm bảo bạn có một cặp phù hợp' là chọn ít nhất 11 số lần sốc.

37) Làm thế nào bạn có thể đảm bảo rằng mã được viết của bạn có thể xử lý các 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 dự kiến.

38) Giải thích sự khác biệt giữa Luồng và Quy trình?

Một tiến trình là một ví dụ 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) 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 tải và thực thi bởi các chương trình động. 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, 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) Gõ mạnh và gõ yếu là gì? Cái nào được ưu tiên? Tại sao?

Gõ mạnh sẽ kiểm tra các loại biến tại thời điểm biên dịch. Mặt khác, đánh máy yếu sẽ kiểm tra các loại hệ thống tại thời điểm chạy. Trong số đó, kiểu gõ mạnh luôn được ưu tiên vì nó hạn chế tối đa các 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 tác vụ chính và các tác vụ phụ được thực hiện bởi các đối tượng độc lập.

42) Tại sao sử dụng catch (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 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 chuyể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) 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 đóng gói ở 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?

Tí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 được chia sẻ và các hợp đồng được chia sẻ.

47) Sự khác biệt giữa ngăn xếp và hàng đợi là gì?

  • Hàng đợi luôn là Người vào trước, Người xuất trước
  • Ngăn xếp luôn là Cuối cùng, Đầu ra trước

48) Điều gì là 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 của mã.

49) Bạn có nghĩ rằng việc bảo trì phần mềm là 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 đúng quy trình phát triển.

50) Cho tôi biết sự khác biệt giữa các thẻ và các nhánh?

Thẻ dành cho các bản phát hành phiên bản, là nơi tạm thời giữ để thực hiện điều đó. 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 mức lớp được bảo vệ có sẵn ở đâu?

Các biến mức 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 lệnh bắt cho một câu lệnh thử duy nhất không?

Đúng. Nhiều khối bắt có thể được thực thi cho một câu lệnh thử duy nhất.

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:

  1. 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 đã được ghi đè.
  2. Trong trường hợp khi tối thiểu một trong các phương thức trong lớp được khai báo là một trừu tượng.

54) Phát triển một thuật toán xuất ra vị trí hiện tại của bạn và danh sách các vị trí máy ATM trong khu vực đó. Cung cấp cho bạn K ATM 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 toán khoảng cách giữa a và b.

Mã:

import java.util.HashMap;import java.util.Map;import java.util.PriorityQueue;public class PrioRQueueExample {public static void main(String[] args){PriorityQueue pq = new PriorityQueue((x,y)-> {Double z = y-x;return z.intValue(); });PrioRQueueExample pqe = new PrioRQueueExample();//Number of ATMs to return i.e. Kint num_ATMs = 3;double curr_loc = 0.00;Map nallATMLocs = new HashMap();//Map of ATM names and their distance co-ordinatesnallATMLocs.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;}}