Contents
Chào mừng bạn đến với Fx Studio. Bạn là một lập trình viên iOS nói riêng, hay một lập trình viên nói chung. Bạn muốn tìm kiếm một công việc và môi trường với những đãi ngộ tốt hơn. Hoặc đơn giản bạn muốn kiểm tra xem kiến thức của mình đã đầy đủ chưa. Thì bài viết này sẽ tổng hợp các câu hỏi mà bạn có thể gặp khi đi phỏng vấn vị trí lập trình viên iOS.
Nếu mọi việc đã ổn rồi, thì …
Bắt đầu thôi!
Chuẩn bị
Bài viết không mang tính chất hướng dẫn giúp cho bạn đậu phỏng vấn kỹ thuật iOS & Swift. Và bạn cũng cần phải có một kiến thức nhất định về Swift & iOS. Cũng tùy thuộc vào các level mà bạn ứng tuyển, thì bạn cần đảm bảo một lượng kiến thức nhất định.
Sau đây là link của một số series bài viết giúp bạn phụ đạo kiến thức được tốt hơn.
-
- Siêu cơ bản: Lập trình iOS cho mọi người
- Dành cho các bạn leader: Cấu hình và cài đặt CI/CD cho iOS Project
- Nâng câu một tí với New Concurrency
- RxSwift
- Combine
- SwiftUI
- …
Rất nhiều series nữa đến từ Fx Studio, bạn có thể tự tìm sau. Tuy nhiên, bạn nên xem qua về iOS Developer Skill Set, để biết mình đã đủ kiến thức cho vị trí mới chưa.
Lưu ý
Bài viết mang tính chất tham khảo từ bản thân mình trong quá trình phỏng vấn rất nhiều các bạn ứng tuyển vào vị trí iOS Developer. Vì theo dòng chảy của thời đại, chúng ta chỉ tập trung vào iOS & Swift. Còn với iOS & Objective-C chắc chỉ là còn trong kỉ niệm mà thôi.
Bạn sẽ tự phải tìm kiến câu trả lời cho các câu hỏi được liệt kê. Công việc đó giúp bạn hệ thống hóa kiến thức của mình tốt hơn. Cuối cùng, mình xin nhắc lại là
Tất cả là mang tính chất THAM KHẢO.
Các câu hỏi được mình liệt kê ra với tư cách là một người đi phỏng vấn bạn. Bạn cũng có thể thấy tâm lý người hỏi bạn thông qua các câu hỏi đó … Nếu ổn định tâm lý rồi, thì chúng ta sẽ bắt đầu danh sách các câu hỏi mà bạn sẽ gặp trong quá trình phỏng vấn nhóe!
Câu hỏi xã giao ban đầu
Bạn không nên xem thường phần đầu tiên này. Ấn tượng tốt hay xấu mà bạn để lại cho các nhà tuyển dụng đều quyết định trong 1~2 câu hỏi đầu tiên nàu thôi. Do đó, bạn nên chuẩn bị trước ở nhà và tập luyện ăn nói lưu loát. Khi đó, nhà tuyển dụng sẽ đánh giá cao bạn thông qua việc tự tin về những gì bạn nói.
-
- Cho bạn 5 phút để trình bày các ưu điểm của bản thân.
- Kinh nghiệm về làm dự án của bản thân bạn.
- Trong tất cả dự án mà bạn tham gia, bạn thích dự án nào nhất? Và vì sao?
- Kể về các công nghệ mà bạn thích nhất.
- …
Câu hỏi về kĩ thuật
Phần này là cả một bầu trời kiến thức. Mình sẽ liệt kê ra một số câu hỏi và chia thành 3 mức đơn giản như sau:
Cơ bản
-
- Hướng đối tượng có bao nhiêu tính chất? Các tính chất đó là gì?
- Đối tượng là gì?
- Class là gì?
- Cho các ví dụ thực tế về đa hình trong hướng đối tượng?
- CRUD là gì?
- Trình bày về hiểu biết của em cho các hệ quản trị cở sở dữ liệu?
- …
Junior & middle
-
- Kế thừa trong Switf là đơn hay đa thừa kế? Muốn đa thừa kế thì phải như thế nào?
- Hướng đối tượng trong Swift có tính trừu tượng hay không?
- Class & struct khác nhau như thế nào?
- Có bao nhiêu mức Access Control trong Swift? Hãy liệt kê chúng theo thứ tự giảm dần?
- Quản lý bộ nhớ trong iOS như thế nào?
- Property Wrappers trong Swift là gì? Liệt kê các loại Wrapper bạn hay sử dụng?
- ARC và non-ARC là gì ( Automatic Reference Counting )?
- Strong và weak là gì?
- Trình bày iOS Application Lifecycle?
- Sự khác nhau của AppDelegate & SenceDelegate?
- Trình bày về mô mình MVC & MVVM trong iOS & Swift?
- Sự kết nối giữa các thành phần trong MVC & MVVM.
- Model được hiểu là như thế nào?
- Trình bày các ưu điểm mà MVVM tối ưu hơn MVC? Trong đó, điểm nào là quan trọng nhất?
- Định nghĩa các mẫu Design Pattern?
- Liệt kê các mẫu Design Pattern mà bạn biết?
- Thế nào là singleton? Có bao nhiều cách tạo một singleton?
- Custom View là gì? Các cách custom view mà bạn sử dụng?
- Thế nào re-usable trong iOS?
- Retain cycle là gì? Cách để tránh chúng?
- Trình bày về CoreData? Các thành phần của nó?
- Realm là gì?
- Các đối tượng nào dùng trong việc điều hướng trong iOS & Swift?
- Storyboard là gì? Cách điều hướng trong Storyboard?
- Decoding & Encoding trong Swift?
- Trình bày cách tương tác với API & cách parse JSON?
- Trình bày về các loại Map được dùng trong iOS?
- Sự khác nhau giữa Local & Remote Push notification?
- Các công cụ quản lý thư viện, như là Cocoapod, Carthage, Swift Package Manager … bạn đã sử dụng những loại nào? Ưu điểm của chúng?
- …
Khi ứng viên không trả lời hết được các câu hỏi, thì một số câu hỏi sau để cứu vớt ứng viên.
-
- Autolayout là gì? Trong đó các yếu tố nào ảnh hưởng chính?
- Kéo thả Autolayout cho UIScrollview như thế nào?
- Trình bày các loại Property trong Swift?
- Có bao nhiều cách để thêm một function cho một class có sẵn?
- Protocol là gì?
- Phân biệt sự khác nhau giữa delegate & datasource?
- Closure là gì?
- Grand Central Dispatch là gì?
- Các cách lưu trữ dữ liệu tại local?
- Optional là gì?
- …
Senior
-
- Đặc điểm chung của lập trình mobile là gì? Yếu tố nào quyết định tới ứng dụng mobile?
- Liệt kê các cách passing data trong iOS & Swift?
- Vì sao Swift được gọi là ngôn ngữ an toàn?
- Generic là gì? Trình bày các loại cơ bản Generic trong Swift?
- Trình bày khái niệm về Higher Order Function?
- Định nghĩa Functional Programming?
- Thành phần nào cấu tạo nên Functional Programming?
- Bạn đã có kinh nghiệm về submit ứng dụng lên store chưa? Thời gian review của Apple trung bình là bao lâu?
- Trình bày hiểu biết của bạn về các CI/CD đối với iOS?
- Các vấn đề Fastlane?
- Các ngôn ngữ hay framework Reactive Programming mà bạn đã dùng?
- Thế nào là KVO?
- Trình bày về các cách mà bạn đã debug trong iOS & Swift?
- Trình bày các mô hình anh chị em của MVC?
- Thế nào là callback & request được dùng trong các mô hình phổ biến hiện nay?
- Trình bày về các mô hình nâng cao, như: MVVM-C, Viper …
- Trình bày hiểu biết về Combine.
- Bạn biết gì về SwiftUI?
- Trình bày về SwiftUI App Life Cycle (mới)?
- Sự khác nhau giữa UIKit AppDelegate và SwiftUI App?
- Trình bày về Concurrency (mới & cũ) trong iOS & Swift?
- Concurrent vs Serial DispatchQueue trong iOS & Swift?
- Liệt kê các độ ưu tiên của một queue trong GCD?
- Trình bày về các kĩ thuật testing trong iOS?
- Phân biệt giữa Unit Test & UI Test?
- Code coverage là gì? Chúng ta có bao nhiều level để thực hiện Testing và cho Code coverage?
- Trình bày cách cách bạn giải quyết nhiều task bất đồng bộ cùng lúc với nhau?
- Trình bày về async/await trong Swift?
- AR & VR trong hệ sinh thái Apple?
- Có bao nhiều cách định nghĩa hệ tọa độ trong ARKit?
- Cách bạn Capture Videos và custom Camera?
- …
Và nếu như ứng viên vào vị trí senior không như bạn kỳ vọng, thì hãy thử hack não với các lý thuyết thuật toán cơ bản.
-
- Trình bày thuật toán tìm kiếm nhị phân? (tập trung để ý xem người được hỏi có chú ý điều kiện ban đầu hay không)
- Thuật toán tìm lớp trưởng?
- Bài toán tìm chuỗi con trong chuỗi mẹ?
- Theo tư duy của máy tính thì 1 + 2 * 3 bằng bao nhiêu?
- Thuật toán tìm đường đi ngắn nhất?
- print(true && false || true || false && false) sẽ cho kết quả là gì? Giải thích nó?
- …
Câu hỏi để chém ứng viên
Khi bạn quá mệt mỏi với ứng viên. Bạn muốn kết thúc buổi phỏng vấn sớm, thì sẽ dùng một số câu hỏi đánh đố người phỏng vấn như sau:
-
- View là gì?
- Class là gì?
- Object là gì?
- Model là gì?
- Function là gì?
- Lập trình là gì?
- Frame là gì?
- Có bao nhiều thuật toán sắp xếp?
- Programming paradigm là gì?
- …
Các câu hỏi về định nghĩa những thứ hiển nhiên hoặc những cái xem như là mặc định, thì sẽ hủy diệt ứng viên nhanh & nhiều nhất. Đôi khi gây ra sang chấn tâm lý đối ứng viên về sau. Do đó, bạn nên cẩn thận khi sử dụng chúng. Nếu không thì tên công ty của bạn sẽ đi kèm với hình ảnh một số bộ phận sinh dục à.
Câu hỏi về thái độ và tư duy
-
- 3~5 năm tới bạn mong muốn làm gì? Em chuẩn bị gì cho nó?
- Bạn có Github hay không?
- Bạn có thích chia sẻ mã nguồn của các dự án?
- Mã nguồn của một dự án trong công ty là của ai?
- Bạn có thích lưu trữ mã nguồn các dự án mà bạn tham gia hay không?
- Làm việc nhóm là như thế nào?
- Thế nào là code xong 1 task?
- Bạn sẽ viết test trước hay code trước?
- Bạn cảm thấy như thế nào khi task của bạn luôn bị khách hàng thay đổi yêu cầu?
- Giữ dev và tester khi có mâu thuẩn thì ai là người đúng? (hỏi ngu để xem ứng viên phản ứng ra sao)
- 1 Dev có khi nào lương cao hơn 1 PM hay không?
- …
Câu hỏi về Leader hay các vị trí cao hơn
-
- Giao tiếp trong dự án là như thế nào?
- Vai trò của Leader trong team là gì?
- Cảm nhận về vai trò PM trong dự án?
- Thế nào là một Senior developer?
- Trình bày hiểu biết về các hệ thống API, Webserive … ?
- Các mô hình quản lý dự án?
- Scrum có làm dự án thành công hay không?
- Mình muốn biết cách bạn triển khai một feature (với đầy đủ coding + testing) cho team của bạn là như thế nào?
- Theo bạn thì coding guidelines cho một nền tảng thì sẽ bao gồm những gì trong đó? Và có thật sự phải tuân thủ coding guidelines không, hãy cho mình biết suy nghĩ của bạn về nó?
- Công việc của techlead theo bạn sẽ làm những việc gì trong team Bạn có force team theo cách của bạn không?
- Dependency Injection trong Swift
- Bạn hiểu như thế nào về Race Conditions. Và trình bày các cách triệt tiêu Race Conditions trong lập trình.
- Bạn trình bày về App Thining trong iOS là như thế nào. (hỏi cái này trước, đúng ý mới tiếp phần sau) Trong đó, cách nào bạn xem là tối ưu nhất cho việc giảm size ứng dụng?
- Trình bày sự khác nhau cơ bản của Declarative vs Imperative Programming. Theo bạn thì tương lại lập trình sẽ theo phòng cách nào và tại sao?
- Bạn có biết WWDC không? Hãy trình bày điều mà bạn hứng thú nhất trong WWDC mới nhất mà bạn đã xem?
- Theo bạn thì tương lai của Swift & iOS như thế nào?
- …
Tạm kết
Qua trên, mình đã trình bày các câu hỏi có thể bạn sẽ gặp. Tuy nhiên, chúng chưa là phải là đây đủ. Và mình sẽ cố gắng bổ sung dần các câu hỏi mới. Hy vọng bài viết này sẽ giúp bạn có được một buổi phỏng vấn tốt & vui vẻ. Nếu có gì thắc mắc hay góp ý cho mình thì bạn có thể để lại bình luận hoặc gởi email theo trang Contact.
Cảm ơn bạn đã đọc bài viết này!
Related Posts:
Written by chuotfx
Hãy ngồi xuống, uống miếng bánh và ăn miếng trà. Chúng ta cùng nhau đàm đạo về đời, về code nhóe!
Leave a Reply Cancel reply
Fan page
Tags
Recent Posts
- Charles Proxy – Phần 1 : Giới thiệu, cài đặt và cấu hình
- Complete Concurrency với Swift 6
- 300 Bài code thiếu nhi bằng Python – Ebook
- Builder Pattern trong 10 phút
- Observer Pattern trong 10 phút
- Memento Pattern trong 10 phút
- Strategy Pattern trong 10 phút
- Automatic Reference Counting (ARC) trong 10 phút
- Autoresizing Masks trong 10 phút
- Regular Expression (Regex) trong Swift
You may also like:
Archives
- September 2024 (1)
- July 2024 (1)
- June 2024 (1)
- May 2024 (4)
- April 2024 (2)
- March 2024 (5)
- January 2024 (4)
- February 2023 (1)
- January 2023 (2)
- November 2022 (2)
- October 2022 (1)
- September 2022 (5)
- August 2022 (6)
- July 2022 (7)
- June 2022 (8)
- May 2022 (5)
- April 2022 (1)
- March 2022 (3)
- February 2022 (5)
- January 2022 (4)
- December 2021 (6)
- November 2021 (8)
- October 2021 (8)
- September 2021 (8)
- August 2021 (8)
- July 2021 (9)
- June 2021 (8)
- May 2021 (7)
- April 2021 (11)
- March 2021 (12)
- February 2021 (3)
- January 2021 (3)
- December 2020 (3)
- November 2020 (9)
- October 2020 (7)
- September 2020 (17)
- August 2020 (1)
- July 2020 (3)
- June 2020 (1)
- May 2020 (2)
- April 2020 (3)
- March 2020 (20)
- February 2020 (5)
- January 2020 (2)
- December 2019 (12)
- November 2019 (12)
- October 2019 (19)
- September 2019 (17)
- August 2019 (10)