Câu hỏi phỏng vấn về kỹ thuật phần mềm
Kính gửi quý độc giả, những Software Engineering Interview Questions đã được thiết kế đặc biệt để giúp bạn làm quen với bản chất của các câu hỏi mà bạn có thể gặp phải trong cuộc phỏng vấn cho chủ đề Software Engineering. Theo kinh nghiệm của tôi, những người phỏng vấn giỏi hầu như không có kế hoạch hỏi bất kỳ câu hỏi cụ thể nào trong cuộc phỏng vấn của bạn, thông thường các câu hỏi bắt đầu với một số khái niệm cơ bản về chủ đề và sau đó họ tiếp tục dựa trên thảo luận sâu hơn và những gì bạn trả lời:
Q.What is computer software?
A. Phần mềm máy tính là một gói hoàn chỉnh, bao gồm chương trình phần mềm, tài liệu và hướng dẫn sử dụng về cách sử dụng phần mềm.
Q.Can you differentiate computer software and computer program?
A. Chương trình máy tính là một đoạn mã lập trình thực hiện một nhiệm vụ được xác định rõ ràng, trong đó phần mềm bao gồm mã lập trình, tài liệu hướng dẫn sử dụng và tài liệu của nó.
Q.What is software engineering?
A. Kỹ thuật phần mềm là một nhánh kỹ thuật gắn liền với phát triển hệ thống phần mềm.
Q.When you know programming, what is the need to learn software engineering concepts?
A.Một người biết xây tường chưa chắc đã giỏi xây cả một ngôi nhà. Tương tự như vậy, một người có thể viết chương trình có thể không có kiến thức về các khái niệm khác của Kỹ thuật phần mềm. Các khái niệm kỹ thuật phần mềm hướng dẫn các lập trình viên cách đánh giá yêu cầu của người dùng cuối, thiết kế các thuật toán trước khi bắt đầu mã hóa thực tế, tạo chương trình bằng cách mã hóa, kiểm tra mã và tài liệu của nó.
Q.What is software process or Software Development Life Cycle (SDLC)?
A.Vòng đời phát triển phần mềm, hay quy trình phần mềm là sự phát triển có hệ thống của phần mềm bằng cách tuân theo mọi giai đoạn trong quá trình phát triển, cụ thể là Thu thập yêu cầu, Phân tích hệ thống, Thiết kế, Mã hóa, Kiểm tra, Bảo trì và Tài liệu theo thứ tự đó.
Q.What are SDLC models available?
A. Có một số mô hình SDLC có sẵn như Mô hình thác nước, Mô hình lặp lại, Mô hình xoắn ốc, Mô hình V và Mô hình vụ nổ lớn, v.v.
Q.What are various phases of SDLC?
A.Các giai đoạn chung của SDLC là: Thu thập Yêu cầu, Phân tích và Thiết kế Hệ thống, Mã hóa, Kiểm tra và triển khai. Các giai đoạn phụ thuộc vào mô hình chúng tôi chọn để phát triển phần mềm.
Q.Which SDLC model is the best?
A.Các mô hình SDLC được thông qua theo yêu cầu của quá trình phát triển. Nó có thể rất phù hợp với phần mềm để đảm bảo mô hình nào phù hợp.
Chúng tôi có thể chọn mô hình SDLC tốt nhất nếu thỏa mãn các câu trả lời sau:
- SDLC có phù hợp với công nghệ đã chọn để triển khai phần mềm không?
- SDLC có phù hợp với các yêu cầu và ưu tiên của khách hàng không?
- Mô hình SDLC có phù hợp với kích thước và độ phức tạp của phần mềm không?
- Mô hình SDLC có phù hợp với loại dự án và kỹ thuật mà chúng tôi thực hiện không?
- SDLC có thích hợp cho các nhà phát triển cùng vị trí địa lý hoặc phân tán không?
Q.What is software project management?
A. Quản lý dự án phần mềm là quá trình quản lý tất cả các hoạt động như quản lý thời gian, chi phí và chất lượng liên quan đến việc phát triển phần mềm.
Q.Who is software project manager?
A. Người quản lý dự án phần mềm là người đảm nhận trách nhiệm thực hiện dự án phần mềm.
Q.What does software project manager do?
A. Người quản lý dự án phần mềm tham gia vào các hoạt động quản lý phần mềm. Ông chịu trách nhiệm lập kế hoạch dự án, giám sát tiến độ, giao tiếp giữa các bên liên quan, quản lý rủi ro và nguồn lực, thực hiện suôn sẻ quá trình phát triển và thực hiện dự án đúng với thời gian, chi phí và chất lượng.
Q.What is software scope?
A. Phạm vi phần mềm là một ranh giới được xác định rõ ràng, bao gồm tất cả các 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 rõ ràng 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 xác định những gì sản phẩm sẽ làm và những gì nó sẽ không làm, những gì sản phẩm cuối cùng sẽ chứa và những gì nó sẽ không chứa.
Q.What is project estimation?
A.Đây là một quá trình để ước tính các khía cạnh khác nhau của sản phẩm phần mềm nhằm tính toán chi phí phát triển về mặt nỗ lực, thời gian và nguồn lực. Ước tính này có thể được rút ra từ kinh nghiệm trong quá khứ, bằng cách tham khảo ý kiến 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.
Q.How can we derive the size of software product?
A. Kích thước của sản phẩm phần mềm có thể được tính bằng một trong 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
Q.What are function points?
A.Điểm chức năng là các tính năng khác nhau được cung cấp bởi sản phẩm phần mềm. Nó được coi như một đơn vị đo lường cho kích thước phần mềm.
Q.What are software project estimation techniques available?
A. Có nhiều kỹ thuật ước lượng có sẵn, được sử dụng rộng rãi nhất là -
- Kỹ thuật phân rã (Đếm dòng mã và điểm hàm)
- Kỹ thuật thực nghiệm (Putnam và COCOMO).
Q.What is baseline?
A.Đường cơ sở là một phép đo xác định mức độ hoàn chỉnh của một giai đoạn. Sau khi tất cả các hoạt động liên quan đến một giai đoạn cụ thể được hoàn thành, giai đoạn này đã hoàn thành và đóng vai trò là cơ sở cho giai đoạn tiếp theo.
Q.What is Software configuration management?
A. 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 những thay đổi trong phần mềm về các yêu cầu, thiết kế, chức năng và sự phát triển của sản phẩm.
Q.What is change control?
A. Kiểm soát thay đổi là chức năng của quản lý cấu hình, đảm bảo rằng tất cả các thay đổi được thực hiện đối với hệ thống phần mềm là nhất quán và được thực hiện theo các quy tắc và quy định của tổ chức.
Q.How can you measure project execution?
A. Chúng tôi có thể đo lường việc thực hiện dự án thông qua 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.
Q.Mention some project management tools.
A.Có nhiều công cụ quản lý dự án khác nhau được sử dụng theo yêu cầu của chính sách tổ chức và dự án phần mềm. Chúng bao gồm Biểu đồ Gantt, Biểu đồ PERT, Biểu đồ Tài nguyên, Phân tích Đường dẫn Quan trọng, Báo cáo Trạng thái, Danh sách Kiểm tra Mốc, v.v.
Q.What are software requirements?
A.Yêu cầu phần mềm là mô tả chức năng của hệ thống phần mềm được đề xuất. Các yêu cầu được giả định là mô tả hệ thống đích, các chức năng và tính năng của nó. Yêu cầu chuyển tải những mong đợi của người dùng từ hệ thống.
Q.What is feasibility study?
A.Nó là một thước đo để đánh giá mức độ thực tế và lợi ích của việc phát triển dự án phần mềm đối với một tổ chức. Bộ phân tích phần mềm tiến hành nghiên cứu kỹ lưỡng để hiểu được tính khả thi về kinh tế, kỹ thuật và hoạt động của dự án.
Economic - Vận chuyển nguồn lực, chi phí đào tạo, chi phí các tiện ích và công cụ bổ sung và ước tính tổng thể chi phí và lợi ích của dự án.
Technical - 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à (các) hệ điều hành mà phần mềm sẽ thực thi, kiến thức và kỹ năng của nhà phát triển hiện có, đào tạo, tiện ích hoặc công cụ cho dự án.
Operational - Tổ chức có thể điều chỉnh trơn tru những thay đổi được thực hiện theo yêu cầu của dự án không? Vấn đề có đáng giải quyết không?
Q.How can you gather requirements?
A. Các yêu cầu có thể được thu thập từ người dùng thông qua phỏng vấn, khảo sát, phân tích nhiệm vụ, động não, phân tích miền, tạo mẫu, nghiên cứu phiên bản phần mềm có thể sử dụng hiện có và bằng cách quan sát.
Q.What is SRS?
A.SRS hoặc Đặc tả yêu cầu phần mềm là tài liệu được tạo ra tại thời điểm quy trình thu thập yêu cầu. Nó cũng có thể được coi là một quá trình tinh chỉnh các yêu cầu và ghi lại chúng.
Q.What are functional requirements?
A. Yêu cầu chức năng là các tính năng và thông số kỹ thuật chức năng được người dùng mong đợi từ sản phẩm phần mềm được đề xuất.
Q.What are non-functional requirements?
A. Các yêu cầu phi chức năng là ngầm định và liên quan đến bảo mật, hiệu suất, giao diện người dùng, khả năng tương tác, chi phí, v.v.
Q.What is software measure?
A. Các biện pháp phần mềm có thể được hiểu là một quá trình định lượng và ký hiệu các thuộc tính và khía cạnh khác nhau của phần mềm.
Q.What is software metric?
A.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 và sản phẩm phần mềm. Chúng được chia thành -
- Chỉ số yêu cầu: Yêu cầu về độ dài, tính đầy đủ
- Chỉ số sản phẩm: Dòng mã, chỉ số hướng đối tượng, chỉ số thiết kế và thử nghiệm
- Đo lường quy trình: Đánh giá và theo dõi ngân sách, lịch trình, nguồn nhân lực.
Q.What is modularization?
A. Mô-đun hóa là một kỹ thuật để chia một hệ thống phần mềm thành nhiều mô-đun kín đáo, dự kiến sẽ thực hiện (các) nhiệm vụ một cách độc lập.
Q.What is concurrency and how it is achieved in software?
A.Đồng thời là xu hướng của các sự kiện hoặc hành động xảy ra đồng thời. Trong phần mềm, khi hai hoặc nhiều quá trình thực thi đồng thời, chúng được gọi là các quá trình đồng thời.
Thí dụ
Trong khi bạn bắt đầu lệnh in và bắt đầu in, bạn có thể mở một ứng dụng mới.
Đồng thời, được thực hiện bằng cách chia phần mềm thành nhiều đơn vị thực thi độc lập, cụ thể là các quy trình và luồng, đồng thời thực thi chúng song song.
Q.What is cohesion?
A. Sự gắn kết là một thước đo xác định mức độ tin cậy nội bộ giữa các phần tử của mô-đun.
Q.What is coupling?
A. Khớp nối là một thước đo xác định mức độ tin cậy lẫn nhau giữa các mô-đun của chương trình.
Q.Mentions some software analysis & design tools?
A. Đó có thể là: DFD (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ơ đồ HIPO (Đầu ra quy trình đầu vào phân cấp), Sơ đồ ER (Mối quan hệ thực thể) và Bảng quyết định.
Q.What is level-0 DFD?
A. DFD mức trừu tượng cao nhất được gọi là DFD mức 0 còn được gọi là DFD mức ngữ cảnh, mô tả toàn bộ hệ thống thông tin như một sơ đồ che giấu tất cả các chi tiết bên dưới.
Q.What is the difference between structured English and Pseudo Code?
A. Tiếng Anh có cấu trúc là ngôn ngữ tiếng Anh bản địa được sử dụng để viết cấu trúc của một mô-đun chương trình bằng cách sử dụng các từ khóa của ngôn ngữ lập trình, trong khi Pseudo Code gần với ngôn ngữ lập trình hơn và sử dụng các từ hoặc câu tiếng Anh bản địa để viết các phần của mã.
Q.What is data dictionary?
A.Từ điển dữ liệu được gọi là siêu dữ liệu. Có nghĩa, nó là một kho lưu trữ dữ liệu về dữ liệu. Từ điển dữ liệu được sử dụng để sắp xếp các tên và các tham chiếu của chúng được sử dụng trong hệ thống như các đối tượng và tệp cùng với các quy ước đặt tên của chúng.
Q.What is structured design?
A.Thiết kế có cấu trúc là một khái niệm hóa vấn đề thành một số yếu tố được tổ chức tốt của giải pháp. Đó là quan tâm đến việc thiết kế giải pháp và dựa trên chiến lược 'chia để trị'.
Q.What is the difference between function oriented and object oriented design?
A.Thiết kế hướng chức năng bao gồm nhiều hệ thống con nhỏ hơn được gọi là chức năng. Mỗi chức năng có khả năng thực hiện nhiệm vụ quan trọng trong hệ thống. Thiết kế hướng đối tượng hoạt động xung quanh các đối tượng (thực thể) trong thế giới thực, các lớp (danh mục) của chúng và các phương thức hoạt động trên các đối tượng (chức năng).
Q.Briefly define top-down and bottom-up design model.
A. Mô hình từ trên xuống bắt đầu với cái nhìn tổng quát về hệ thống và phân rã nó thành những cái cụ thể hơn, trong khi mô hình từ dưới lên bắt đầu với hầu hết các thành phần cụ thể và cơ bản trước tiên và tiếp tục biên soạn các thành phần để có được mức độ trừu tượng cao hơn.
Q.What is the basis of Halstead’s complexity measure?
A. Thước đo độ phức tạp của Halstead phụ thuộc vào việc triển khai thực tế của chương trình và nó coi các mã thông báo được sử dụng trong chương trình là cơ sở để đo lường.
Q.Mention the formula to calculate Cyclomatic complexity of a program?
A. Độ phức tạp chu kỳ sử dụng công thức của lý thuyết đồ thị: V (G) = e - n + 2
Q.What is functional programming?
A.Lập trình hàm là kiểu ngôn ngữ lập trình sử dụng các khái niệm về 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, tạo ra kết quả bất kể trạng thái chương trình.
Q.Differentiate validation and verification?
A. Xác thực kiểm tra xem sản phẩm có được thực hiện theo yêu cầu của người dùng hay không trong khi xác minh kiểm tra xem các bước thích hợp có được thực hiện để phát triển sản phẩm hay không.
Xác nhận xác nhận sản phẩm phù hợp và xác minh xác nhận nếu sản phẩm được xây dựng đúng cách.
Q.What is black-box and white-box testing?
A.Kiểm tra hộp đen kiểm tra xem đầu ra mong muốn có được tạo ra khi các giá trị đầu vào hợp lệ được đưa ra hay không. Nó không xác minh việc triển khai thực tế của chương trình.
Kiểm tra hộp trắng không chỉ kiểm tra đầu ra mong muốn và hợp lệ khi đầu vào hợp lệ được cung cấp mà còn kiểm tra xem mã có được triển khai chính xác hay không.
Tiêu chí | Kiểm tra hộp đen | Kiểm tra hộp trắng |
---|---|---|
Kiến thức cần thiết về chương trình phần mềm, thiết kế và cấu trúc | Không | Đúng |
Kiến thức cần thiết về triển khai phần mềm | Không | Đúng |
Người thực hiện kiểm tra này trên phần mềm | Nhân viên kiểm thử phần mềm | Người phát triển phần mềm |
tham chiếu cơ sở cho người thử nghiệm | Yêu cầu thông số kỹ thuật | Chi tiết thiết kế và cấu trúc |
Q.Quality assurance vs. Quality Control?
A. Đảm bảo chất lượng giám sát để 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.
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.
Q.What are various types of software maintenance?
A. Các loại bảo trì là: khắc phục, thích ứng, hoàn thiện và phòng ngừa.
- Corrective
Xóa lỗi do người dùng phát hiện
- Adaptive
giải quyết những thay đổi trong môi trường phần cứng và phần mềm nơi phần mềm hoạt động
- Perfective maintenance
thực hiện các thay đổi trong các yêu cầu hiện tại hoặc mới của người dùng
- Preventive maintenance
thực hiện các biện pháp thích hợp để tránh các vấn đề trong tương lai
Q.What is software re-engineering?
A.Tái thiết kế phần mềm là quá trình nâng cấp công nghệ mà phần mềm được xây dựng mà không làm thay đổi chức năng của phần mềm. Điều này được thực hiện để giữ cho phần mềm được điều chỉnh với công nghệ mới nhất.
Q.What are CASE tools?
A.CASE là viết tắt của Computer Aided Software Engineering. Các công cụ CASE 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ợ, tăng tốc và làm trơn tru các hoạt động SDLC.
Tiếp theo là gì?
Hơn nữa, bạn có thể xem lại các bài tập trước đây mà bạn đã làm với chủ đề này và đảm bảo rằng bạn có thể nói một cách tự tin về chúng. Nếu bạn tươi tắn hơn thì người phỏng vấn không mong đợi bạn sẽ trả lời những câu hỏi rất phức tạp, thay vào đó bạn phải làm cho các khái niệm cơ bản của bạn thật vững chắc.
Thứ hai, nó thực sự không quan trọng lắm nếu bạn không thể trả lời một số câu hỏi nhưng điều quan trọng là bất cứ điều gì bạn trả lời, bạn phải trả lời một cách tự tin. Vì vậy, chỉ cần cảm thấy tự tin trong cuộc phỏng vấn của bạn. Chúng tôi tại tutorialspoint chúc bạn may mắn có được một người phỏng vấn tốt và tất cả những điều tốt nhất cho nỗ lực trong tương lai của bạn. Chúc mừng :-)