20 câu hỏi tuyển dụng cơ bản cho junior ios developer

Ngôn ngữ Swift chỉ vừa mới bốn năm tuổi nhưng nó đã trở thành ngôn ngữ mặc định cho lập trình iOS. Vì Swift đã phát triển đến phiên bản 5.0, nó trở thành một ngôn ngữ phức tạp và mạnh mẽ bao hàm các mô hình lập trình hướng đối tượng và hướng chức năng. Mỗi phiên bản mới lại mang đến nhiều sự hoàn thiện và cải tiến tốt hơn.

Dưới đây mình xin nêu vài câu hỏi có thể các bạn sẽ gặp phải khi đi phỏng vấn xin việc, hoặc các bạn cũng có thể đọc để củng cố lại kiến thức. Những câu hỏi này không phải do mình nghĩ ra, mà do mình tình cờ đọc được trên Medium.com. Bài viết này chỉ mang tính chất tham khảo, củng cố kiến thức cho vui, các bạn đi phỏng vấn mà bên tuyển dụng không hỏi câu nào trong đây thì cũng không được trách mình đâu nhé ! =]]

Optional là gì ?

  • Là một kiểu dữ liệu có thể chứa giá trị nil

Optional Binding là gì ?

  • Là một phương thức để làm việc với kiểu dữ liệu optional và đảm bảo có dữ liệu trả ra bằng cách sửa dụng if let hoặc guard let

Optional Chaining là gì ?

  • Là một chuỗi dữ liệu trong đó có ít nhất 1 phần tử trong chuỗi là kiểu Optional

Phân biệt Optional và Implicitly Unwrapped Optional ?

  • Optional và Implicitly Unwrapped Optional đều là Optional nên nó đều có thể nhận các giá trị nil. Nhưng khác so với Optional, mỗi khi gọi một biến được khai báo là Implicitly Unwrapped Optional, nó sẽ được tự động Force Unwrap. Vì vậy khi gọi một biến Implicitly Unwrapped Optional lúc nó đang mang giá trị nil thì app sẽ bị crash.

    Chính vì thế, với các biến này chúng ta cũng phải kiểm tra nó trước khi sử dụng giống như sử dụng một biến Optional

Làm thế nào để tự động Force Unwrap một biến mỗi khi ta gọi đến nó ?

So sánh Thuộc tính tính toán và thuộc tính lưu trữ ?

  • Computed properties, một loại property không thật sự lưu trữ value, thay vào đó, nó cung cấp getter và optional setter để nhận và set những properties và gán giá trị một cách gián tiếp.
  • Một stored property, class, structure và enums là một constant hoặc variable được lưu trữ như là một phần của instance thuộc về một class hoặc structure cụ thể. Stored properties có thể là variable stored properties [với từ khoá var] hoặc constant stored properties [với từ khoá let].

Giải thích var xx: Int {willSet { khác gì so với var yy: Int {didSet { ?

  • Với var xx: Int {willSet { : thì thực hiện các phương thức trước khi gán giá trị.
  • Với var yy: Int {didSet { : thì thực hiện các phương thức ngay sau khi biến được gán giá trị

Array khác Dictionary như thế nào ?

  • Array thì quan tâm đến thứ tự, còn Dictionary thì ko quan tâm đến thứ tự

Array khác Set như thế nào ?

  • Array thì quan tâm đến thứ tự, còn Set thì ko quan tâm đến thứ thự và phần tử trong set không được lặp lại [nên các element trong Set phải implement Equatable]

Làm thế nào để tạo ra một biến mà nó chỉ được khởi tạo giá trị khi được gọi đến lần đầu tiên ?

  • – ‘ Lazy var XXX: ‘Kiểu dữ liệu’ = { return ‘Giá trị tương ứng kiểu dữ liệu’

    }[]

GET khác POST như thế nào?

  • Get: Parameter truyền lên được đính trong url,
  • Post: Parameter truyền lên thì được đính trong Body

So sánh giữa Merge và Rebase ?

  • Merge là gom tất cả những thay đổi của nhánh nguồn vào 1 commit merge trong nhánh hiện thời.
  • Rebase là chuyển tất cả các commit của nhánh nguồn vào dưới cùng của nhánh hiện thời, sau đó apply từng commit trong nhánh hiện thời lên trên trên những commit đó

Revert khác gì so với reset ?

  • Reset là xóa mọi sự thay đổi từ thời điểm hiện tại ngược lại cho đến commit được chọn. Revert là tạo một commit nghịch đảo mọi sự thay đổi của commit được chọn

Cherry Pick là gì ?

  • Sao chép các thay đổi từ 1 commit và apply vào branch hiện thời

Stash là gì ?

  • Lưu trữ những thay đổi vào một ngăn tạm

Merge Request là gì?

  • Tạo 1 yêu cầu để Gom tất cả các thay đổi từ nhánh khác vào 1 commit trên nhánh hiện đích

Pull To Request là gì?

  • Tạo một yêu cầu để gom tất cả các thay đổi từ 1 nhánh trên repo khác vào một commit trên nhánh hiện thời của repo đích

So sánh Hard Reset, Soft Reset

  • Hard reset là xóa hết commit đến commit được chọn.
  • Còn Soft reset là xóa các commit nhưng vẫn giữ nguyên các thay đổi.

Nêu các cách truyền dữ liệu ?
‘- Có 06 cách truyền dữ liệu:

  1. Segue để truyền dữ liệu đi. Unwind Segue để trả dữ liệu về
  2. Delegate
  3. Closure
  4. NotificationCenter.
  5. Singleton [Một biến toàn cục sử dụng trên toàn ứng dụng khai báo dạng static].
  6. UserDefault, CoreData, Reaml… sử dụng lưu dữ liệu xuống DataBase và load lên.
  7. KVO

Singleton là gì và được sử dụng khi nào?

  • Definition: Singleton là pattern đảm bảo rằng một lớp chỉ có một instence duy nhất cung cấp một cổng giao tiếp chung nhất để truy cập vào lớp đó.
    Example:

    Class API { static let shared: API = API[] }

      static let shared: API = API[]

Trình bày vòng đời của một ViewController [bỏ qua LoadView] ?

  • Vòng đời Viewcontroller: -ViewDidload -> ViewwillAppear -> ViewdidAppear -> ViewwilldisAppear -> ViewdidDisAppear Detail: -VIewdidLoad: được gọi khi Viewcontroller đã được nạp vào bộ nhớ.[set up data or khởi tạo object ,UI trên màn hình] -ViewwillAppear: được gọi trước khi một view hiển thị lên -ViewdidAppear: gọi khi view đã được hiển thị lên màn hình -ViewwillDisappear: Gọi khi 1 view đã ẩn khỏi màn hình và animation khi ẩn view đó.

    -VIewDidDisAppear: gọi khi một view đã ẩn khỏi màn hình

Trình bày vòng đời của một App ?

  • Đầu tiên vào DidFinishLaunching -> [WillEnterForcegrounh -> DidBecomeActive -> WillResignActive -> DidEnterBackgrouch] -> WillTerminate

Unowned VS Weak như thế nào?

  • Unowned là một Non-Optional. Vòng đời của nó trùng với vòng đời Object. Nghĩa là nó được tạo cùng Object, và được giải phóng khi object bị giải phóng. Không một object nào được trỏ đến nó, nên nó có tên là Unowned.

  • Weak là một biến Optional. Nó có thể được khởi tạo sau, và có thể tiếp tục tồn tại sau khi object trỏ đến nó bị giải phóng.

Tạm thời mới tìm hiểu tới đây phần sau mình sẽ viết thêm ….

Bạn đang lo lắng khi lần đầu phỏng vấn? Bạn cảm thấy thiếu tự tin về kinh nghiệm khi apply vào các công ty IT? Đừng hoang mang vì hôm nay, TopDev sẽ bật mí với các bạn những câu hỏi phỏng vấn từ các các nhà tuyển dụng IT. Bài viết là những chia sẻ thông qua các trải nghiệm tuyển dụng thực tế của đội ngũ TopDev, hy vọng sẽ có ích cho các bạn.

Nghe thì đã sợ, đó là cảm giác ám ảnh suốt một khoảng thời gian dài đúng không nào? Tuy nhiên, bạn đừng lo, bài test đầu vào của một công ty IT nhằm đánh giá tổng quát những kiến thức cơ bản của bạn về vị trí ứng tuyển. Vì thế, bạn nên thoải mái, giữ một tinh thần tốt để sẵn sàng hoàn thành bài thi bất cứ lúc nào nhé.

Cụ thể trong thách thức đầu tiên, bạn cần thể hiện mình có những am hiểu cơ bản về chuyên môn lập trình, tư duy logic và khả năng về ngoại ngữ. Trong đó, bài thi về chuyên môn lập trình bao gồm bộ câu hỏi trắc nghiệm nhằm giúp bạn hệ thống lại các kiến thức xoay quanh nền tảng lập trình [Java core], web [HTML, CSS, JS], database. Chung quy lại, việc kiểm tra năng lực của bạn sẽ đi từ việc khai thác kiến thức Front-end đến Back-end và Database.

Đây có thể nói là vòng quan trọng nhất bởi bạn sẽ được phỏng vấn trực tiếp bởi đội ngũ chuyên môn đến từ các Team Leader tại công ty. Thông thường, các bạn sẽ được hỏi các kiến thức từ cơ bản đến nâng cao. Sau đây, TopDev sẽ đưa ra danh sách các câu hỏi được phân loại tương ứng từng loại kiến thức chuyên môn. Đây là sườn những vấn đề và câu hỏi thường được nhà tuyển dụng hỏi để đánh giá năng lực và tiềm năng phát triển của ứng viên.

  • Giới thiệu bản thân: Bạn có thể nói sơ về số năm kinh nghiệm, sở thích về công nghệ, vị trí và dự định muốn làm [Dành cho khoảng này 2-3 phút thôi nhé]
  • Hãy nói về 1 project bạn đã làm? Bạn làm vai trò gì?: Người phỏng vấn sẽ hỏi khá sâu về cấu trúc project, những việc đã bạn làm, kể cả những khó khăn bạn gặp phải và kèm theo cách xử lý và vượt qua nó. Chính quá trình xử lý vấn đề họ sẽ đánh giá được nhiều điều từ bạn qua câu hỏi này.

Bộ câu hỏi tổng hợp được chia nhỏ theo nhiều skill, hãy chuẩn bị kỹ lưỡng trước càng sâu các skill trong chuyên môn và những gì bạn đã đề trong CV. Bạn sẽ được hỏi đầy đủ từ backend, đến frontend và cả một số các framework liên quan. Ngoài lý thuyết, bạn có thể còn được hỏi cách giải quyết 1 vấn đề cụ thể nào đấy, hãy chuẩn bị kỹ lưỡng nhé!

Bộ cheatsheet bạn có thể tham khảo:

    • Thế nào là lập trình đối tượng? Cho biết các tính chất đặc thù của lập trình hướng đối tượng?
    • Sự khác nhau giữa While và doWhile?
    • Cách tổ chức hoạt động của các Collection Framework như List , Map, Set, Queue, Stack,..?
    • Phân biệt ArrayList , Linkedlist và Vector?
    • Sự khác nhau giữa ArrayList – Array, Linkedlist – Arraylist, Set – List, Override – Overload?
    • Khái niệm về Generic? Cho ví dụ và lý do sử dụng?
    • Sự khác nhau giữa Abstract class và Interface?
    • Khái niệm tham trị và tham chiếu?
    • Ngoại lệ [Exception là gì]? Phân biệt Check và Uncheck exception?
    • Thuật toán tìm kiếm nhị phân và thuật toán sắp xếp?

Tham khảo ngay: Top các việc làm Java lương cao tại Topdev

    • Git fork là gì? Sự khác nhau giữa git fork, branch và clone?
    • Sự khác nhau giữa pull request và branch?
    • Làm thế nào để revert previous commit trong git?
    • Giải thích những ưu điểm of Forking Workflow?
    • Sự khác nhau giữa HEAD, working tree và index?
    • Trình bày quy trình làm việc của Gitflow Workflow?
    • Khi nào nên sử dụng git stash?
    • Làm thế nào để loại bỏ một tập tin từ git mà không cần loại bỏ nó khỏi file system của bạn?
    • Khi nào nên sử dụng git rebase thay vì git merge?

  Những câu hỏi phỏng vấn về GIT cần nhớ ngay

    • Mô hình MVC là gì? Mô tả luồng đi của một ứng dụng MVC?
    • Các khái niệm về Dependency Injection, JPA, ORM mapping, Webservice?
    • Giải thích các annotation @Controller , @Service , @Repository , @Autowire?
    • Chức năng hoạt động của Maven?
    • Sự khác nhau của Session và Cookie?
    • Làm thế nào để bảo mật trong lập trình?
    • Khái niệm Database? Các quan hệ trong database? Các loại Join trong database?
    • Các khái niệm về Composite key, Transaction, Unique?
    • Khoá chính – khóa ngoại là gì?
    • Giải thích các Rule chuẩn hóa dữ liệu?
    • Sự khác nhau Truncate, Delete , Drop?
    • Sự khác nhau Having và Where?

Tham khảo các vị trí tuyển dụng Database hấp dẫn nhất trong tháng

    • HTML, CSS, Bootstrap dùng để làm gì ?
    • Phân biệt Class và Id? Phân biệt 
    • Phân biệt các thuộc tính Position: Absolute, Fixed, Relative, Fixed, Static
    • Khai báo trong HTML có tác dụng gì?
    • Phân biệt Class vs ID như thế nào trong CSS?
    • Phân biệt toán tử “==” và “===” trong Javascript?
    • “this” trong Javascript dùng để làm gì?
    • Đánh lừa bằng cách đặt tên function trùng với một function có sẵn của thư viện

Tìm việc làm cho lập trình viên Front end hấp dẫn nhất 2022

Câu hỏi này như một thách thức thêm để đánh giá mức độ cập nhật các xu hướng công nghệ mới của từng ứng viên.

Qua câu hỏi này, nhà tuyển dụng IT không đưa ra sự kết luận cuối nào cho kết quả tuyển dụng ứng viên, chỉ là xác lập thêm tiêu chí ứng viên đó có khả năng tự tìm hiểu về lĩnh vực mình theo đuổi hay không. Đó là điểm cộng lớn cho các ứng viên.

Lúc này sẽ có thêm một số câu hỏi cá nhân để không khí bớt căng thẳng: Bạn có sở thích gì? Bạn có điểm yếu điểm mạnh gì?,… Cứ trả lời thành thật! Bạn sẽ không chỉ được đánh giá qua kỹ năng technical, mà còn đánh giá qua thái độ làm việc, thái độ trả lời câu hỏi. Có nhiều câu hỏi bạn không biết, nhưng nếu cố gắng trả lời, thể hiện thái độ muốn học hỏi bạn vẫn sẽ được đánh giá cao nhé.

* Cuối buổi phỏng vấn: Bạn sẽ được hỏi rằng “Có câu hỏi gì không?” Đừng ngại mà hỏi các câu hỏi như: Môi trường làm việc ra sao, có yêu cầu OT hay không? Chính sách review tăng lương tăng thưởng thế nào? Công ty có tổ chức seminar hay chính sách gì để giúp nhân viên phát triển không?. Những câu hỏi này sẽ thể hiện bạn có tinh thần làm việc nghiêm túc, biết suy nghĩ đến tương lai.

Những câu hỏi trên là những câu hỏi thông dụng nhất được tập hợp lại và chia sẻ thông qua các trải nghiệm tuyển chọn cá nhân. TopDev mong rằng, các bạn sẽ trang bị cho mình năng lực chuyên môn, các kỹ năng cần thiết và quan trọng là một thái độ tốt. Hãy nhớ rằng, sau buổi phỏng vấn, nhớ gửi một email cảm ơn cho người đã phỏng vấn mình. Đây là một điều nho nhỏ, hiệu quả lại lơn lớn mà các bạn thường “quên” không làm.

Có thể bạn quan tâm:

Xem thêm IT Developer Job trên TopDev

  • TAGS
  • câu hỏi phỏng vấn
  • interview
  • phỏng vấn IT

Video liên quan

Chủ Đề