까먹은 것들 복습하기

작성일

오늘은 어제 면접에 나온 질문중, 생각나는 질문에 답변을 달아보려고한다.

싱글톤패턴이란?

객체의 인스턴스가 오직 1개만 생성되는 패턴, 데이터 공유가 쉽다.

Alamofire , URLSession차이점

URLSession

  • iOS 앱에서 서버와 통신하기 위해 Apple 이 제공하는 네트워킹 API
  • 로우 레벨의 코드를 작성할 수 있고, 가장 기본적인 방법
  • Alamofire 의 기반이 되는 API
  • 특정 URL을 사용해서 데이터를 다운로드, 업로드하기 위한 API

    Alamofire

  • 네트워킹 오픈소스 라이브러리
  • URLSession 에 기반한 라이브러리
  • 코드의 간소화 및 가독성 측면에서 보다 성능이 개선되었다
  • 유지보수와 유닛 테스트가 힘들다는 단점이 있다

    Moya

  • 네트워킹 오픈소스 프레임워크
  • 추상화 된 정도 : URLSession < Alamofire < Moya
  • Network Layer 를 템플릿화 해서 재사용성을 높인다
  • 열거형 enum 을 사용해서 안전하고 정돈된 방식으로 캡슐화한다

프로토콜이란?

프로토콜은 class나 struct의 행동을 정의하는 역할을 합니다. 프로토콜은 행동을 정의하기만 할 뿐 구현하지 않습니다. 어떠한 클래스나 구조체가 해당 프로토콜을 따른다는 것은 프로토콜에 정의된 행동들을 구현해야함을 의미합니다.

함수형 프로그래밍이란?

  • 값이나 상태의 변화보다는 함수 자체의 응용을 중요하게 여기는 것이다.
  • 코드 이해와 실행 결과의 관점에서, 순수하게 함수에 전달된 인자 값만 결과에 영향을 주기 때문에 상태 값을 갖지 않고 순수하게 함수만으로 동작한다.
  • 프로그램 동작 과정에서 상태(값)가 변하지 않으면 함수 호출이 각각 상호 간섭 없이 실행되므로 병렬처리를 할 때 부작용이 거의 없다는 장점이 있다.

고차 함수란?

  • 함수를 매개변수로 전달받거나 함수를 결과로 반환하는 함수
  • 고차 함수는 매개변수로 받은 함수를 필요한 시점에 호출하거나 클로저를 생성하여 반환한다.

디자인패턴이란?

  • 기존 환경 내에서 반복적으로 일어나는 문제들을 어떻게 풀어나갈 것인가에 대한 일종의 솔루션

장점

  • 개발자 간의 원할한 의사소통
  • 소프트웨어 구조 파악 용이
  • 재사용을 통한 개발 시간 단축
  • 설계 변경 요청에 대한 유연한 대처
  • 불필요한 리소스 낭비 방지

단점

  • 객체지향 설계 / 구현 위주로 사용된다
  • 초기 투자 비용 부담