까먹은 것들 복습하기
작성일
오늘은 어제 면접에 나온 질문중, 생각나는 질문에 답변을 달아보려고한다.
싱글톤패턴이란?
객체의 인스턴스가 오직 1개만 생성되는 패턴, 데이터 공유가 쉽다.
Alamofire , URLSession차이점
URLSession
- iOS 앱에서 서버와 통신하기 위해 Apple 이 제공하는 네트워킹 API
- 로우 레벨의 코드를 작성할 수 있고, 가장 기본적인 방법
- Alamofire 의 기반이 되는 API
- 특정 URL을 사용해서 데이터를 다운로드, 업로드하기 위한 API
Alamofire
- 네트워킹 오픈소스 라이브러리
- URLSession 에 기반한 라이브러리
- 코드의 간소화 및 가독성 측면에서 보다 성능이 개선되었다
- 유지보수와 유닛 테스트가 힘들다는 단점이 있다
Moya
- 네트워킹 오픈소스 프레임워크
- 추상화 된 정도 : URLSession < Alamofire < Moya
- Network Layer 를 템플릿화 해서 재사용성을 높인다
- 열거형 enum 을 사용해서 안전하고 정돈된 방식으로 캡슐화한다
프로토콜이란?
프로토콜은 class나 struct의 행동을 정의하는 역할을 합니다. 프로토콜은 행동을 정의하기만 할 뿐 구현하지 않습니다. 어떠한 클래스나 구조체가 해당 프로토콜을 따른다는 것은 프로토콜에 정의된 행동들을 구현해야함을 의미합니다.
함수형 프로그래밍이란?
- 값이나 상태의 변화보다는 함수 자체의 응용을 중요하게 여기는 것이다.
- 코드 이해와 실행 결과의 관점에서, 순수하게 함수에 전달된 인자 값만 결과에 영향을 주기 때문에 상태 값을 갖지 않고 순수하게 함수만으로 동작한다.
- 프로그램 동작 과정에서 상태(값)가 변하지 않으면 함수 호출이 각각 상호 간섭 없이 실행되므로 병렬처리를 할 때 부작용이 거의 없다는 장점이 있다.
고차 함수란?
- 함수를 매개변수로 전달받거나 함수를 결과로 반환하는 함수
- 고차 함수는 매개변수로 받은 함수를 필요한 시점에 호출하거나 클로저를 생성하여 반환한다.
디자인패턴이란?
- 기존 환경 내에서 반복적으로 일어나는 문제들을 어떻게 풀어나갈 것인가에 대한 일종의 솔루션
장점
- 개발자 간의 원할한 의사소통
- 소프트웨어 구조 파악 용이
- 재사용을 통한 개발 시간 단축
- 설계 변경 요청에 대한 유연한 대처
- 불필요한 리소스 낭비 방지
단점
- 객체지향 설계 / 구현 위주로 사용된다
- 초기 투자 비용 부담