본문 바로가기

iOS 앱 개발자 프로젝트/iOS 숙련

[iOS] 기술 면접 준비

4월도 어느 덧 중반..

 

코드를 살펴보며.. 기술 과제를 작성해 봅니다.

모의 기술면접 후기도 연결시켜 둡니다. 링크된 페이지 하단에 있습니다. 


 

1. CoreData의 각 Entity, Attribute, Relationship의 역할

 

  • Entity : 하나의 Entity(개체)는 하나의 데이터 모델을 표현한다. 예를 들어, Todo Entity를 정의하면 여러 개의 Todo를 코어데이터 저장소에 저장할 수 있다. 
  • Attribute : 하나의 개체(Entity)는 하나 이상의 Attribute(속성)으로 구성되며, 그 Entity의 특성이나 상태를 설명한다. 데이터의 가장 작은 논리적 단위로 개체가 가질 수 있는 특성을 나타내며 field 라고도 한다. 
  • Relationship : Entity 간에 관계를 지정할 수 있다. 1:1 관계도 가능하고 Type을 To Many로 변경하여 1:N의 관계를 갖게 만들 수도 있다. 

 

 

2. 앱의 콘텐츠나 데이터 자체를 내부 저장/보관하는 객체로는 무엇이 있는지 아는 대로 말하시오!

    • UserDefaults  키-값 쌍으로 저장하는 인터페이스. 런타임 시 개체를 이용하여 기본 데이터베이스에서 사용하는 기본값을 읽어오기 때문에 값이 필요할 때마다 데이터베이스를 열 필요가 없다. 대용량의 데이터보다 자동 로그인 여부, 아이디, 환경설정에서의 설정 데이터 값과 같은 단일 데이터 등을 보관한다.
    • CoreData  객체 그래프를 관리하기 위한 Framework. 객체를 생성하여 데이터를 운영하기에 많은 저장공간과 메모리를 필요로 하며, 빠르게 데이터를 가져온다. Data Model 생성한 Entity 생성한다.
    • SQLite  Swift에는 특별한 설치없이 바로 사용할 수 있다. C언어로 작성되어 있기에 매우 가벼운 것이 특징이며, 전체 데이터베이스를 디스크 파일 1개에 저장하고, 설정 자체가 매우 간편하기에 관리하기가 수월하다. SQLite iOS, Android, Linux, Window 등과 같이 다양한 운영체제에서 사용된다.
    • Realm  SQLite와 같이 오픈소스이며, 모바일에 최적화된 라이브러리. SQLite, Core Data보다 속도가 빠르고 성능면에서 더 우수하다. 코드가 많이 필요하지 않으며, 메인 스레드에서 데이터의 읽기, 쓰기 작업을 모두 할 수 있어 편리하다. 대용량의 데이터에 대해 무료로 사용할 있으며, 용량이 적고 큼에 상관없이 속도와 성능이 유지된다.

 

 

3. URLSession 설명하기

  • 네트워크 요청을 비동기적(Async)으로 처리하여 데이터를 가져오거나 보내는 작업을 수행.
  • 비동기적 통신 방식으로 백그라운드에서 작업이 수행되어 앱 성능을 향상시키며 응답성을 유지한다.
  • 다양한 데이터 전송 방식을 지원한다. (JSON, 이미지, 파일 등 여러 형식의 데이터 업로드 or 다운로드)
  • 네트워크 응답을 캐싱하고 쿠키를 관리할 수 있는 기능을 제공한다.*
  • 일반적 API 호출에는 .dataTask(with: url) 메서드가 사용된다. *
  • 강력 참조가 생성되므로 클로저 내에서 [weak self]를 통해 참조를 관리하게 된다.*

 

 

4. 앱 화면의 콘텐츠를 표시하는 로직과 관리를 담당하는 객체

 

UIViewController

An object that manages a view hierarchy for your UIKit app.
 
UIKit으로 제작된 앱의 뷰계층구조를 관리하는 객체

 

 

많은 종류의 UIViewController가 있지만 크게 두 가지 유형으로 나뉜다.

 

#1. ContentViewController

가장 기본적인 뷰 컨트롤러로서 "하나의 화면"을 담당하고 그 안에서의 UIView 객체에 대한 생성과 관리를 맡으며 사용자와의 상호작용을 담당한다.

 

#2. ContainerViewController 

"하나 이상의 뷰 컨트롤러를 관리"하는 뷰 컨트롤러. 하나 이상인 컨트롤러의 레이아웃, 화면 전환을 담당한다대표적으로 UINavigationController, UITabBarController 및 UISplitViewController 등이 있다.

 

 

 

 

 

 

※ reference

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=zzu0e&logNo=220689973139

https://velog.io/@tnghk40/Swift-CoreData-Relationship.

https://hyun083.tistory.com/77