Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

브래의 슬기로운 코딩 생활

13 - iOS 신입 개발자 면접 질문에 나올만한 개념들 본문

2 - 겨울방학/Swift 복습

13 - iOS 신입 개발자 면접 질문에 나올만한 개념들

김브래 2023. 12. 31. 20:46

Swift언어란?

Swift는 Apple이 iOS 애플리케이션을 개발하기 위해 도입한 프로그래밍 언어입니다.


모듈화란?

모듈화는 프로그램을 여러 개의 독립적인 부분으로 나누는 것을 말합니다.


CI/CD란?

CI/CD (Continuous Integration/Continuous Delivery)는 애플리케이션 개발 단계를 자동화하여 애플리케이션을 더욱 짧은 주기로 고객에게 제공하는 방법입니다.

테스트 자동화란?

테스트 자동화는 소프트웨어의 품질을 향상시키기 위해 테스트를 자동으로 수행하는 프로세스 입니다.


함수형 프로그래밍이란?

함수형 프로그래밍은 불변성과 순수 함수를 중시하여 부작용을 최소화하고 코드의 간결성과 안정성을 추구하는 프로그래밍 패러다임입니다.


리액티브 프로그래밍이란?

리액티브 프로그래밍은 데이터나 이벤트 변화에 민감하게 반응하는 프로그래밍 스타일로, 변경 사항이 있을 때 시스템이 유연하게 대응할 수 있도록 하는 방법입니다.

명령형 프로그래밍과 다르다

명령형 프로그래밍(Imperative programming) 

– 작성된 코드가 정해진 순서대로 실행됨.


리액티브 프로그래밍(Reactive Programing) 

– 데이터 흐름을 먼저 정의하고 데이터가 변경되었을 때 연관되는 함수나 메서드가 업데이트 되는 방식.


Combine이란?

Combine은 애플의 프레임워크로, 리액티브 프로그래밍을 지원하는 라이브러리입니다. 


API (Application Programming Interface) 란? 

API란 응용프로그램 사이의 통신에 사용되는 메세지의 규칙입니다.

 

OPEN API란?

API를 누구나 사용할 수 있도록 공개 해 놓은 것 입니다


REST란?

REST는 Representational State Transfer의 약자로, 클라이언트와 서버 간의 효율적이고 일관된 통신을 위한 웹 개발 아키텍처입니다.RESTful API는 REST 원칙을 따르는 API를 의미하며, 주로 HTTP 프로토콜을 사용합니다.


디자인 패턴 이란?

특정 문맥에서 공통적으로 발생하는 문제에 대한 재사용 가능한 해결책입니다.


클린 아키텍쳐란?

클린 아키텍처는 소프트웨어 시스템을 모듈화하고 각 모듈 간의 의존성을 최소화하여 유지보수성, 테스트 용이성, 확장성을 향상시키기 위한 아키텍처 패턴입니다.


MVC(Model-View-Controller)  모델이란?

Model:
데이터와 비즈니스 로직을 담당합니다. 애플리케이션의 상태와 동작을 정의하며, 데이터의 변경을 감지하고 알림을 제공합니다.

 

View:
사용자에게 보여지는 부분으로, UI 요소들을 담당합니다. 사용자 인터페이스를 표현하고, 모델의 데이터를 표시합니다.

 

Controller:
사용자 입력을 처리하고 모델과 뷰 간의 통신을 관리합니다. 사용자의 액션에 응답하여 모델을 갱신하고, 변경된 데이터를 뷰에 반영합니다.


MVP (Model-View-Presenter) 모델이란?

Model (모델):
데이터와 비즈니스 로직을 담당하는 부분입니다. 데이터의 상태를 관리하고, 변경되었을 때 관련된 기능을 수행합니다.

 

View (뷰):
사용자에게 정보를 표시하고, 사용자 입력을 받는 부분입니다. 뷰는 사용자 인터페이스의 시각적인 부분을 담당하며, 사용자의 동작을 컨트롤러(프레젠터)로 전달합니다.

 

Presenter (프레젠터):
뷰와 모델 간의 중간 역할을 하는 부분으로, 사용자의 입력을 처리하고, 모델의 데이터를 갱신합니다. 프레젠터는 뷰를 직접 조작하지 않고, 뷰에게 필요한 작업을 지시하며, 모델과 뷰 간의 독립성을 유지합니다.


MVVM (Model-View-ViewModel)모델이란?

Model:
MVC와 마찬가지로 데이터와 비즈니스 로직을 담당합니다.

 

View:
사용자 인터페이스를 표현하고, 사용자의 입력을 받습니다. 뷰가 직접 모델에 의존하는 것이 아니라, 뷰모델을 통해 상태를 업데이트합니다.

 

ViewModel:
뷰와 모델 간의 중간 역할을 수행합니다. 모델로부터 데이터를 가져와서 뷰가 표시할 형식으로 가공합니다. 또한 사용자의 입력을 받아 모델을 업데이트합니다.


차이점은?

MVC:

  1. 모든 입력(Input)들은 Controller로 전달됩니다.
  2. Controller는 입력에 해당하는 Model을 업데이트 합니다.
  3. 업데이트 결과에 따라 View를 선택합니다.
  4. Controller는 View를 선택할 뿐, 직접 업데이트를 하지 않습니다.

 

MVP:

  1. View로 사용자의 입력이 들어옵니다.
  2. View는 Presenter에 작업 요청을 합니다.
  3. Presenter에서 필요한 데이터를 Model에 요청 합니다.
  4. Model은 Presenter에 필요한 데이터를 응답 합니다.
  5. Presenter는 View에 데이터를 응답 합니다.
  6. View는 Presenter로부터 받은 데이터로 화면에 보여주게 됩니다.

 

MVVM:

  1. View에 입력이 들어오면 Command 패턴으로 ViewModel에 명령을 합니다.
  2. ViewModel은 필요한 데이터를 Model에 요청 합니다.
  3. Model은 ViewModel에 필요한 데이터를 응답 합니다.
  4. ViewModel은 응답 받은 데이터를 가공해서 저장 합니다.
  5. View는 ViewModel과의 Data Binding으로 인해 자동으로 갱신 됩니다.

리팩토링 이란?

리팩토링은 코드의 내부 구조를 개선하여 가독성, 유지보수성 을 향상시키는 프로세스 입니다.


OOP(Object-Oriented Programming)란?

OOP란 객체 지향 프로그래밍을 뜻합니다.

객체 지향 프로그래밍은 캡슐화, 추상화, 다형성, 상속성 의 특징이 있습니다.


Test-Driven Development(TDD) - 테스트 주도 개발

기능을 구현하기 전에 테스트 코드를 먼저 작성하고, 그 테스트를 통과할 만큼의 코드를 작성하는 개발 접근 방식입니다

 


참조 타입과 값 타입의 차이는?

참조 타입은 메모리 상에서 한 위치를 여러 변수나 상수가 참조하는 반면, 

값 타입은 각각이 별도의 메모리 공간을 가지고 복사되어 전달 됩니다.


Class와 Struct의 차이는?

class:

- 참조 타입입니다.

- 상속이 가능합니다

- ARC (Automatic Reference Counting)에 따라 메모리 관리됩니다.

 

struct:

- 값 타입입니다

- 상속이 불가능 합니다.

- 참조 계수 카운팅이 없습니다


UIkit 과 SwiftUI란?

UIkit:
Apple의 iOS 및 tvOS 애플리케이션을 개발하기 위한 기본적인 프레임워크입니다.

 

SwiftUI:
Apple이 최근에 도입한 선언적인 UI 프레임워크로, Swift 언어에 특화되어 있습니다.

 

차이점:
UIKit은 프로젝트의 기존 코드와 호환성이 높고, 많은 앱이 사용 중입니다.
SwiftUI는 보다 간결하고 선언적인 문법을 제공하여 개발 생산성을 향상시킵니다.
SwiftUI는 기능이 계속 확장 중이며, 새로운 iOS 버전에서의 지원이 강화되고 있습니다.


비동기 프로그래밍 이란?

비동기 프로그래밍은 작업을 순차적으로 처리하는 대신, 

여러 작업을 동시에 실행하여 효율성과 응답성을 향상시키는 프로그래밍 패러다임입니다. 


앱의 생명주기 란?

앱의 시작, 실행, 백그라운드 진입, 종료 등과 같은 주요 상태 변화 단계입니다.


GCD (Grand Central Dispatch) 란?

다중 스레드 환경에서 비동기 및 병렬 프로그래밍을 지원하는 iOS의 API입니다.


ARC (Automatic Reference Counting) 란?

메모리 관리를 자동으로 처리하는 기술로, 객체에 대한 참조 횟수를 추적하여 자동으로 메모리를 해제합니다.


Core Data란?

iOS 및 macOS 애플리케이션에서 데이터를 관리하고 저장하기 위한 프레임워크 입니다.


네트워크 통신

URLSession을 사용하여 서버와의 통신을 담당하거나, Alamofire와 같은 라이브러리를 이용합니다.


Human Interface Guidelines

Apple에서 제공하는 디자인 가이드로, 사용자 경험을 향상시키기 위한 디자인 규칙입니다.


XCTest

Apple에서 제공하는 테스트 프레임워크로, iOS 애플리케이션을 위한 단위 테스트 및 UI 테스트를 할 수 있도록 지원합니다.


.