- 컴퓨터 구조와 관련하여 CPU, RAM, 저장장치의 역할과 상호 작용에 대해 설명해주세요.
- 캐시 메모리의 개념과 종류, 역할에 대해 설명해주세요.
캐시 메모리 개념
캐시 메모리는 CPU의 처리 속도와 주 기억 장치의 접근 속도 차이를 줄이기 위해 사용합니다. 데이터 지역성을 활용하여 메인 메모리에 있는 데이터를 캐시 메모리에 불러와 두고, 프로세서가 필요한 데이터를 캐시 메모리에서 먼저 찾도록 하면 시스템 성능을 향상할 수 있습니다.
캐시 메모리 종류
- CPU 캐시 메모리
- GPU 캐시 메모리
- SSD 캐시 메모리
- Digital Signal Processor 캐시 메모리
- TLB
- CPU 아키텍처의 종류(예: ARM, x86)와 특징에 대해 설명해주세요.
x86
- Intel 기반 32bit CPU 입니다.
- 현존 하는 PC 프로그램 대부분이 이 아키텍처를 지원 합니다.
- Windows, Linux, Mac OS (BigSur 까지)
x86_64 (amd64)
- amd64 라고도 합니다.
- Intel 기반 64bit CPU 이며, x86과 호환 됩니다.
- 사실상 AMD가 만들었는데 Intel 과 크로스 라이센싱 하여 둘 다 씁니다.
- Windows, Linux, Mac OS (BigSur 까지)
arm
- arm 기반 32bit CPU 입니다.
- x86 과 아예 달라서 둘이 전혀 호환이 안됩니다.
- Linux, Mac OS (Monterey 부터), Android, iOS, 기타 모든 쪼그만 기기에서 성능 내야하는 경우 (공유기도 해당)
arm64 (arm64/v8)
- arm 기반의 64bit CPU 입니다.
- 32bit arm 과 호환 됩니다.
- Linux, Mac OS (Monterey 부터), Android, iOS, 기타 모든 쪼그만 기기에서 성능 내야하는 경우 (공유기도 해당)
+ M 시리즈(M1, M2, M3 ...) 맥북의 경우 ARM 아키텍처에 속합니다.
이들은 Apple Silicon이라고 불리는 새로운 프로세서 아키텍처로, Intel의 x86 아키텍처와는 매우 다른 방식으로 데이터를 처리합니다. Apple Silicon은 모든 컴퓨터 코드를 처리하는 방식으로, 사람이 읽을 수 있는 언어를 기계어로 변환하여 처리합니다. 이는 Intel x86 아키텍처와는 매우 다른 접근 방식을 사용하며, 이로 인해 두 아키텍처 간의 호환성 문제가 발생할 수 있습니다. 그러나 Apple은 Rosetta 2라는 번역 및 에뮬레이션 기술을 사용하여 이러한 문제를 해결하고, 사용자가 Intel 프로세서 기반의 Mac에서 실행되는 애플리케이션을 Apple Silicon 기반의 Mac에서도 사용할 수 있게 했습니다.
- iOS 기기에서 사용되는 AP(Application Processor)의 특징과 역할에 대해 설명해주세요.
iOS 기기에서 사용되는 AP(Application Processor)는 기기의 주요 처리 작업을 담당하는 중앙 처리 장치(CPU)입니다. AP는 운영 체제, 애플리케이션, 그리고 시스템 서비스를 관리하며, 사용자 인터페이스와 입력 장치를 통한 사용자 입력을 처리합니다. AP는 기기의 성능, 배터리 수명, 그리고 전력 소비에 큰 영향을 미치는 중요한 구성 요소입니다. iOS 기기에서 AP는 높은 성능과 효율성을 제공하기 위해 최적화된 설계와 기술을 사용합니다.
- 운영체제의 역할과 iOS에서의 운영체제 구조에 대해 설명해주세요.
- 운영체제는 자원관리, 자원보호, 하드웨어 / 소프트웨어 인터페이스를 제공하며 효율성, 안정성, 확장성, 편리성을 목표로 동작합니다.
- iOS에서의 운영체제는 하위 계층부터 Core OS / Core Service / Media / Cocoa Touch / Application으로 구성되어 있으며, 하위 계층일수록 하드웨어에 가깝고 기본이 되는 층이며, 상위로 갈수록 사용자와 관련있는 계층입니다.
Application
- iOS의 가장 바깥 계층으로, Apple App, Third-Party App이 여기 속함
- 사용자와 가장 맞닿아 있는 계층
Cocoa Touch
- 화면의 그래픽 UI 및 터치의 기능을 제공함
- UIKit, MapKit, MessageUI등이 여기에 속함
- 실제로 개발할 때 가장 많이 접하게 되는 계층
Media
- 그래픽이나 오디오, 비디오 등 멀티미디어 기능을 제공하는 계층
- C와 Objective-C가 혼합되어 있는 형태
- AVFoundation(미디어 재생관련), MediaPlayer(플레이어), Core Image(이미지 가공)등의 기능이 있음
Core Service
- GPS 나침반, 가속도 센서, 자이로스코프 디바이스 등 하드웨어적 기능들이 속함
- Core Os에서 제공하지 않는 기능들을 포함
- 내부 데이터 / 위치 / 센서 등의 기능을 제공
- CoreMotion(기기 센서), Accounts(계정 관리), Core Foundation(데이터 관리)등의 기능을 제공
Core OS
- 하드웨어와 가장 가까이 있는 최하위 계층
- 시스템의 핵심 기능을 포함하는 기본적인 부분들을 관리
- 프로세스와 스레드의 차이점, iOS에서의 프로세스와 스레드 관리 방법에 대해 설명해주세요.

- 메모리 관리 기법 중 iOS에서 사용되는 방식과 그 특징에 대해 설명해주세요.
Automatic Reference Counting (ARC)
ARC는 iOS에서 메모리 관리를 단순화하고 효율화하기 위해 도입된 기술입니다. ARC를 사용하면 개발자가 수동으로 메모리 할당 및 해제를 관리할 필요 없이, 컴파일러가 자동으로 필요한 메모리 관리 코드를 추가해줍니다.
ARC의 동작 원리:
- 객체가 생성되면, 그 객체에 대한 참조 카운트가 증가합니다.
- 객체에 대한 참조가 해제되면, 참조 카운트가 감소합니다.
- 참조 카운트가 0이 되면, ARC는 해당 객체의 메모리를 해제합니다.
강한 참조와 약한 참조
강한(strong) 참조와 약한(weak) 참조는 객체의 참조 카운트에 영향을 주는 방식이 다릅니다. 이 둘의 차이를 이해하고 올바르게 사용하는 것이 중요합니다.
- 강한 참조: 객체에 대한 기본 참조 방식으로, 참조 카운트를 증가시킵니다. 객체의 메모리가 해제되지 않도록 하기 위해 사용합니다.
- 약한 참조: 참조 카운트에 영향을 주지 않는 참조 방식입니다. 순환 참조를 방지하거나, 참조 카운트가 0이 될 때 메모리에서 해제되어야 하는 객체를 참조할 때 사용합니다.
- strong : reference count를 증가시켜 ARC로 인한 메모리 해제를 피하고, 객체를 안전하게 사용하고자 할 때 사용.
- weak : 순환 참조에 의해 메모리 누수 문제를 막기 위해 사용.
- unowned : 객체의 life cycle이 명확하고 개발자에 의해 제어 가능이 명확한 경우, weak Optional타입 대신하여 사용.
- iOS의 샌드박스(Sandbox) 개념과 역할, 앱 간 데이터 공유 방법에 대해 설명해주세요.
iOS는 기본적으로 앱 마다 별도의 파일을 생성하여 공유되지 않도록 한다.
외부의 공격으로부터 앱이 손상된 경우, 시스템과 사용자 데이터의 피해를 최소화한다.
(외부로부터 들어온 공격을 방지하는 것이 아니라 피해를 최소화)
추가로 앱스토어를 통해 배포되는 모든 앱들은 App SandBox를 적용해야 한다. 다른 곳으로 유통하는 앱도 마찬가지이다.
흔히들 iOS의 보안이 좋다고 얘기하는데, 그 이유가 바로 App SandBox를 적용했기 때문이다.
앱 간 데이터 공유 방법
- AirDrop
- URL Scheme
- Document Interaction
AirDrop, Document Interaction은 한 앱에서 다른 앱으로 파일을 전달해주며 실행하는 방식입니다.
URL Scheme방식도 특정 앱이 가지고 있는 Scheme으로 그 앱을 호출하면서 URL방식으로 문자열을 전달하는 방법입니다.
위 방식들은 데이터를 전달하면서 받는 앱을 실행하면서 동작하게 됩니다.
(그외 원래의 용도(?)는 아니지만) 앱을 실행하지 않고 데이터를 전달할 수 있는 방법으로 클립보드를 이용하는 방법이 있습니다.
클립보드는 복사/붙여 넣기할 때 사용되는 것으로 앱간에서도 붙여 넣기가 가능하듯 앱간에 데이터를 넣고 읽어 올 수 있습니다.
- iOS에서의 메모리 구조와 관리 방식에 대해 자세히 설명해주세요.
- iOS 앱의 메모리 구조(힙, 스택, 코드 영역 등)와 각 영역의 특징에 대해 설명해주세요.
프로그램이 실행되면 운영체제는 메모리에(RAM) 이 프로그램을 위한 공간을 할당해줌.
그 공간은 총 4가지(Code, Data, Heap, Stack)으로 나뉘어져 있음.
코드 영역 - 우리가 작성한 소스 코드가 기계어 형태로 저장된다. 컴파일 타임에 결정되고, 중간에 코드가 변하지 않도록 Read-Only형태로 저장된다.
데이터 영역 - 전역변수가 저장된다. 프로그램 시작과 동시에 할당되고, 프로그램이 종료되어야 해제된다. 실행 도중 변수 값이 변경될 수 있으므로 Read-Write로 지정된다.
- 힙 영역에서 객체가 어떻게 할당되고 관리되는지 설명해주세요.
- 스택 영역에서 함수 호출과 로컬 변수의 메모리 할당 및 해제 과정을 설명해주세요.
- 네트워크 프로토콜 스택과 iOS에서의 네트워크 통신 방식에 대해 설명해주세요.
- HTTP와 HTTPS의 차이점, iOS에서의 보안 통신 방법에 대해 설명해주세요.
HTTP vs HTTPS
HTTPS는 암호화 및 인증이 있는 HTTP입니다.두 프로토콜의 유일한 차이점은 HTTPS는 TLS(SSL)를 사용하여 일반 HTTP 요청과 응답을 암호화하고 해당 요청과 응답에 디지털 서명을 한다는 점입니다.그 결과로 HTTPS는 HTTP보다 훨씬 더 안전합니다
- TCP와 UDP의 차이점에 대해서 설명해 주세요.
- 소켓 통신에 대해 설명해주세요.
- REST API와 iOS에서의 네트워크 요청 및 응답 처리 방법에 대해 설명해주세요.
- REST API에서 Method들의 차이점을 설명해주세요.
- HTTP 상태 코드에 대해서 설명해주세요.
- iOS에서 메모리 사이즈와 관련된 개념과 고려 사항에 대해 설명해주세요.
- iOS 디바이스의 메모리 제약과 앱 메모리 제한에 대해 설명해주세요.
- 메모리 워드(word) 크기와 데이터 정렬(alignment)이 메모리 액세스 성능에 미치는 영향에 대해 설명해주세요.
- 포인터 크기(32비트, 64비트)에 따른 메모리 사용량 차이와 고려 사항에 대해 설명해주세요.
- iOS 앱에서 대용량 데이터를 다룰 때 메모리 사이즈를 고려한 최적화 방안에 대해 설명해주세요.
- 알고리즘의 시간 복잡도와 공간 복잡도의 개념, 빅오 표기법에 대해 설명해주세요.
- 자주 사용되는 정렬 알고리즘(예: 퀵 정렬, 병합 정렬)의 동작 원리와 시간 복잡도를 설명해주세요.
- 이진 탐색의 원리와 시간 복잡도에 대해 설명해주세요.
- 다이나믹 프로그래밍(Dynamic Programming)의 개념을 설명해주세요.
- 자료구조의 종류와 iOS 개발에서 자주 사용되는 자료구조에 대해 설명해주세요.
- 배열, 연결 리스트, 스택, 큐의 특징과 iOS에서의 구현 방법을 설명해주세요.
- 해시 테이블의 개념, 충돌 해결 방법을 설명해주세요.
- 트리 자료구조의 종류(예: 이진 트리, 이진 탐색 트리, AVL 트리)을 설명해주세요.
- 동시성 프로그래밍의 개념과 iOS에서의 동시성 처리 방식에 대해 설명해주세요.
- 병렬 처리와 동시 처리의 차이, iOS에서의 멀티코어 활용 방안에 대해 설명해주세요.
- 암호화와 보안의 기본 개념, iOS 앱 보안을 위한 방안에 대해 설명해주세요.
- 대칭키 암호화와 비대칭키 암호화의 차이에 대해 설명해주세요.
- 해시 함수의 개념과 활용 사례에 대해 설명해주세요.
- 가상 메모리(Virtual Memory)의 개념과 동작 원리에 대해 설명해주세요.
- 가상 메모리의 필요성과 장점에 대해 설명해주세요.
- 페이징(Paging) 기법의 개념과 동작 원리, 페이지 테이블의 역할에 대해 설명해주세요.
- 세그먼테이션(Segmentation) 기법의 개념과 페이징과의 차이점에 대해 설명해주세요.
- iOS 앱의 메모리 사용량 최적화를 위한 방안과 고려 사항에 대해 설명해주세요.
- 메모리 캐싱 기법(예: NSCache, 이미지 캐싱)의 개념과 iOS에서의 구현 방법을 설명해주세요.
- 대용량 데이터(예: 이미지, 비디오) 처리 시 메모리 최적화 방안(예: lazy loading, 썸네일 활용)에 대해 설명해주세요.
- 데이터베이스의 종류와 iOS에서 주로 사용되는 데이터베이스에 대해 설명해주세요.
- iOS에서 사용되는 SQLite, Core Data, Realm 등의 특징과 사용 사례를 설명해주세요.
- 관계형 데이터베이스의 ACID 특성과 트랜잭션의 개념에 대해 설명해주세요.
- iOS에서 데이터베이스 스키마 버전 관리와 마이그레이션을 처리하는 방법을 설명해주세요.
- iOS에서 자동 참조 카운팅(ARC)과 가비지 컬렉션(Garbage Collection)의 차이점에 대해 설명해주세요.
- 가비지 컬렉션의 동작 원리와 장단점에 대해 설명해주세요.
- iOS에서 가비지 컬렉션을 사용하지 않는 이유와 ARC를 선택한 배경에 대해 설명해주세요.
- 싱글톤 패턴(Singleton Pattern)이란 무엇이며, 어떤 경우에 사용하나요?
- 싱글톤 패턴의 장단점은 무엇인가요?
- 싱글톤 객체의 초기화 방법과 접근 방법을 설명해주세요.
- 싱글톤 패턴을 구현할 때 주의할 점은 무엇인가요?
- Swift에서 싱글톤 패턴을 구현할때 멀티스레드에 대해서 어떻게 고려해야하나요?
'CS' 카테고리의 다른 글
[CS] iOS 면접 질문 정리 (0) | 2023.04.04 |
---|---|
[CS] 인텔리픽 모의면접 질문 정리 (0) | 2023.03.31 |
[CS] 자료구조 면접 정리 (2) | 2023.03.23 |
[CS] 운영체제 면접 정리 (1) | 2023.03.21 |
[CS] CS 내용 정리 (2) | 2023.03.10 |
- 컴퓨터 구조와 관련하여 CPU, RAM, 저장장치의 역할과 상호 작용에 대해 설명해주세요.
- 캐시 메모리의 개념과 종류, 역할에 대해 설명해주세요.
캐시 메모리 개념
캐시 메모리는 CPU의 처리 속도와 주 기억 장치의 접근 속도 차이를 줄이기 위해 사용합니다. 데이터 지역성을 활용하여 메인 메모리에 있는 데이터를 캐시 메모리에 불러와 두고, 프로세서가 필요한 데이터를 캐시 메모리에서 먼저 찾도록 하면 시스템 성능을 향상할 수 있습니다.
캐시 메모리 종류
- CPU 캐시 메모리
- GPU 캐시 메모리
- SSD 캐시 메모리
- Digital Signal Processor 캐시 메모리
- TLB
- CPU 아키텍처의 종류(예: ARM, x86)와 특징에 대해 설명해주세요.
x86
- Intel 기반 32bit CPU 입니다.
- 현존 하는 PC 프로그램 대부분이 이 아키텍처를 지원 합니다.
- Windows, Linux, Mac OS (BigSur 까지)
x86_64 (amd64)
- amd64 라고도 합니다.
- Intel 기반 64bit CPU 이며, x86과 호환 됩니다.
- 사실상 AMD가 만들었는데 Intel 과 크로스 라이센싱 하여 둘 다 씁니다.
- Windows, Linux, Mac OS (BigSur 까지)
arm
- arm 기반 32bit CPU 입니다.
- x86 과 아예 달라서 둘이 전혀 호환이 안됩니다.
- Linux, Mac OS (Monterey 부터), Android, iOS, 기타 모든 쪼그만 기기에서 성능 내야하는 경우 (공유기도 해당)
arm64 (arm64/v8)
- arm 기반의 64bit CPU 입니다.
- 32bit arm 과 호환 됩니다.
- Linux, Mac OS (Monterey 부터), Android, iOS, 기타 모든 쪼그만 기기에서 성능 내야하는 경우 (공유기도 해당)
+ M 시리즈(M1, M2, M3 ...) 맥북의 경우 ARM 아키텍처에 속합니다.
이들은 Apple Silicon이라고 불리는 새로운 프로세서 아키텍처로, Intel의 x86 아키텍처와는 매우 다른 방식으로 데이터를 처리합니다. Apple Silicon은 모든 컴퓨터 코드를 처리하는 방식으로, 사람이 읽을 수 있는 언어를 기계어로 변환하여 처리합니다. 이는 Intel x86 아키텍처와는 매우 다른 접근 방식을 사용하며, 이로 인해 두 아키텍처 간의 호환성 문제가 발생할 수 있습니다. 그러나 Apple은 Rosetta 2라는 번역 및 에뮬레이션 기술을 사용하여 이러한 문제를 해결하고, 사용자가 Intel 프로세서 기반의 Mac에서 실행되는 애플리케이션을 Apple Silicon 기반의 Mac에서도 사용할 수 있게 했습니다.
- iOS 기기에서 사용되는 AP(Application Processor)의 특징과 역할에 대해 설명해주세요.
iOS 기기에서 사용되는 AP(Application Processor)는 기기의 주요 처리 작업을 담당하는 중앙 처리 장치(CPU)입니다. AP는 운영 체제, 애플리케이션, 그리고 시스템 서비스를 관리하며, 사용자 인터페이스와 입력 장치를 통한 사용자 입력을 처리합니다. AP는 기기의 성능, 배터리 수명, 그리고 전력 소비에 큰 영향을 미치는 중요한 구성 요소입니다. iOS 기기에서 AP는 높은 성능과 효율성을 제공하기 위해 최적화된 설계와 기술을 사용합니다.
- 운영체제의 역할과 iOS에서의 운영체제 구조에 대해 설명해주세요.
- 운영체제는 자원관리, 자원보호, 하드웨어 / 소프트웨어 인터페이스를 제공하며 효율성, 안정성, 확장성, 편리성을 목표로 동작합니다.
- iOS에서의 운영체제는 하위 계층부터 Core OS / Core Service / Media / Cocoa Touch / Application으로 구성되어 있으며, 하위 계층일수록 하드웨어에 가깝고 기본이 되는 층이며, 상위로 갈수록 사용자와 관련있는 계층입니다.
Application
- iOS의 가장 바깥 계층으로, Apple App, Third-Party App이 여기 속함
- 사용자와 가장 맞닿아 있는 계층
Cocoa Touch
- 화면의 그래픽 UI 및 터치의 기능을 제공함
- UIKit, MapKit, MessageUI등이 여기에 속함
- 실제로 개발할 때 가장 많이 접하게 되는 계층
Media
- 그래픽이나 오디오, 비디오 등 멀티미디어 기능을 제공하는 계층
- C와 Objective-C가 혼합되어 있는 형태
- AVFoundation(미디어 재생관련), MediaPlayer(플레이어), Core Image(이미지 가공)등의 기능이 있음
Core Service
- GPS 나침반, 가속도 센서, 자이로스코프 디바이스 등 하드웨어적 기능들이 속함
- Core Os에서 제공하지 않는 기능들을 포함
- 내부 데이터 / 위치 / 센서 등의 기능을 제공
- CoreMotion(기기 센서), Accounts(계정 관리), Core Foundation(데이터 관리)등의 기능을 제공
Core OS
- 하드웨어와 가장 가까이 있는 최하위 계층
- 시스템의 핵심 기능을 포함하는 기본적인 부분들을 관리
- 프로세스와 스레드의 차이점, iOS에서의 프로세스와 스레드 관리 방법에 대해 설명해주세요.

- 메모리 관리 기법 중 iOS에서 사용되는 방식과 그 특징에 대해 설명해주세요.
Automatic Reference Counting (ARC)
ARC는 iOS에서 메모리 관리를 단순화하고 효율화하기 위해 도입된 기술입니다. ARC를 사용하면 개발자가 수동으로 메모리 할당 및 해제를 관리할 필요 없이, 컴파일러가 자동으로 필요한 메모리 관리 코드를 추가해줍니다.
ARC의 동작 원리:
- 객체가 생성되면, 그 객체에 대한 참조 카운트가 증가합니다.
- 객체에 대한 참조가 해제되면, 참조 카운트가 감소합니다.
- 참조 카운트가 0이 되면, ARC는 해당 객체의 메모리를 해제합니다.
강한 참조와 약한 참조
강한(strong) 참조와 약한(weak) 참조는 객체의 참조 카운트에 영향을 주는 방식이 다릅니다. 이 둘의 차이를 이해하고 올바르게 사용하는 것이 중요합니다.
- 강한 참조: 객체에 대한 기본 참조 방식으로, 참조 카운트를 증가시킵니다. 객체의 메모리가 해제되지 않도록 하기 위해 사용합니다.
- 약한 참조: 참조 카운트에 영향을 주지 않는 참조 방식입니다. 순환 참조를 방지하거나, 참조 카운트가 0이 될 때 메모리에서 해제되어야 하는 객체를 참조할 때 사용합니다.
- strong : reference count를 증가시켜 ARC로 인한 메모리 해제를 피하고, 객체를 안전하게 사용하고자 할 때 사용.
- weak : 순환 참조에 의해 메모리 누수 문제를 막기 위해 사용.
- unowned : 객체의 life cycle이 명확하고 개발자에 의해 제어 가능이 명확한 경우, weak Optional타입 대신하여 사용.
- iOS의 샌드박스(Sandbox) 개념과 역할, 앱 간 데이터 공유 방법에 대해 설명해주세요.
iOS는 기본적으로 앱 마다 별도의 파일을 생성하여 공유되지 않도록 한다.
외부의 공격으로부터 앱이 손상된 경우, 시스템과 사용자 데이터의 피해를 최소화한다.
(외부로부터 들어온 공격을 방지하는 것이 아니라 피해를 최소화)
추가로 앱스토어를 통해 배포되는 모든 앱들은 App SandBox를 적용해야 한다. 다른 곳으로 유통하는 앱도 마찬가지이다.
흔히들 iOS의 보안이 좋다고 얘기하는데, 그 이유가 바로 App SandBox를 적용했기 때문이다.
앱 간 데이터 공유 방법
- AirDrop
- URL Scheme
- Document Interaction
AirDrop, Document Interaction은 한 앱에서 다른 앱으로 파일을 전달해주며 실행하는 방식입니다.
URL Scheme방식도 특정 앱이 가지고 있는 Scheme으로 그 앱을 호출하면서 URL방식으로 문자열을 전달하는 방법입니다.
위 방식들은 데이터를 전달하면서 받는 앱을 실행하면서 동작하게 됩니다.
(그외 원래의 용도(?)는 아니지만) 앱을 실행하지 않고 데이터를 전달할 수 있는 방법으로 클립보드를 이용하는 방법이 있습니다.
클립보드는 복사/붙여 넣기할 때 사용되는 것으로 앱간에서도 붙여 넣기가 가능하듯 앱간에 데이터를 넣고 읽어 올 수 있습니다.
- iOS에서의 메모리 구조와 관리 방식에 대해 자세히 설명해주세요.
- iOS 앱의 메모리 구조(힙, 스택, 코드 영역 등)와 각 영역의 특징에 대해 설명해주세요.
프로그램이 실행되면 운영체제는 메모리에(RAM) 이 프로그램을 위한 공간을 할당해줌.
그 공간은 총 4가지(Code, Data, Heap, Stack)으로 나뉘어져 있음.
코드 영역 - 우리가 작성한 소스 코드가 기계어 형태로 저장된다. 컴파일 타임에 결정되고, 중간에 코드가 변하지 않도록 Read-Only형태로 저장된다.
데이터 영역 - 전역변수가 저장된다. 프로그램 시작과 동시에 할당되고, 프로그램이 종료되어야 해제된다. 실행 도중 변수 값이 변경될 수 있으므로 Read-Write로 지정된다.
- 힙 영역에서 객체가 어떻게 할당되고 관리되는지 설명해주세요.
- 스택 영역에서 함수 호출과 로컬 변수의 메모리 할당 및 해제 과정을 설명해주세요.
- 네트워크 프로토콜 스택과 iOS에서의 네트워크 통신 방식에 대해 설명해주세요.
- HTTP와 HTTPS의 차이점, iOS에서의 보안 통신 방법에 대해 설명해주세요.
HTTP vs HTTPS
HTTPS는 암호화 및 인증이 있는 HTTP입니다.두 프로토콜의 유일한 차이점은 HTTPS는 TLS(SSL)를 사용하여 일반 HTTP 요청과 응답을 암호화하고 해당 요청과 응답에 디지털 서명을 한다는 점입니다.그 결과로 HTTPS는 HTTP보다 훨씬 더 안전합니다
- TCP와 UDP의 차이점에 대해서 설명해 주세요.
- 소켓 통신에 대해 설명해주세요.
- REST API와 iOS에서의 네트워크 요청 및 응답 처리 방법에 대해 설명해주세요.
- REST API에서 Method들의 차이점을 설명해주세요.
- HTTP 상태 코드에 대해서 설명해주세요.
- iOS에서 메모리 사이즈와 관련된 개념과 고려 사항에 대해 설명해주세요.
- iOS 디바이스의 메모리 제약과 앱 메모리 제한에 대해 설명해주세요.
- 메모리 워드(word) 크기와 데이터 정렬(alignment)이 메모리 액세스 성능에 미치는 영향에 대해 설명해주세요.
- 포인터 크기(32비트, 64비트)에 따른 메모리 사용량 차이와 고려 사항에 대해 설명해주세요.
- iOS 앱에서 대용량 데이터를 다룰 때 메모리 사이즈를 고려한 최적화 방안에 대해 설명해주세요.
- 알고리즘의 시간 복잡도와 공간 복잡도의 개념, 빅오 표기법에 대해 설명해주세요.
- 자주 사용되는 정렬 알고리즘(예: 퀵 정렬, 병합 정렬)의 동작 원리와 시간 복잡도를 설명해주세요.
- 이진 탐색의 원리와 시간 복잡도에 대해 설명해주세요.
- 다이나믹 프로그래밍(Dynamic Programming)의 개념을 설명해주세요.
- 자료구조의 종류와 iOS 개발에서 자주 사용되는 자료구조에 대해 설명해주세요.
- 배열, 연결 리스트, 스택, 큐의 특징과 iOS에서의 구현 방법을 설명해주세요.
- 해시 테이블의 개념, 충돌 해결 방법을 설명해주세요.
- 트리 자료구조의 종류(예: 이진 트리, 이진 탐색 트리, AVL 트리)을 설명해주세요.
- 동시성 프로그래밍의 개념과 iOS에서의 동시성 처리 방식에 대해 설명해주세요.
- 병렬 처리와 동시 처리의 차이, iOS에서의 멀티코어 활용 방안에 대해 설명해주세요.
- 암호화와 보안의 기본 개념, iOS 앱 보안을 위한 방안에 대해 설명해주세요.
- 대칭키 암호화와 비대칭키 암호화의 차이에 대해 설명해주세요.
- 해시 함수의 개념과 활용 사례에 대해 설명해주세요.
- 가상 메모리(Virtual Memory)의 개념과 동작 원리에 대해 설명해주세요.
- 가상 메모리의 필요성과 장점에 대해 설명해주세요.
- 페이징(Paging) 기법의 개념과 동작 원리, 페이지 테이블의 역할에 대해 설명해주세요.
- 세그먼테이션(Segmentation) 기법의 개념과 페이징과의 차이점에 대해 설명해주세요.
- iOS 앱의 메모리 사용량 최적화를 위한 방안과 고려 사항에 대해 설명해주세요.
- 메모리 캐싱 기법(예: NSCache, 이미지 캐싱)의 개념과 iOS에서의 구현 방법을 설명해주세요.
- 대용량 데이터(예: 이미지, 비디오) 처리 시 메모리 최적화 방안(예: lazy loading, 썸네일 활용)에 대해 설명해주세요.
- 데이터베이스의 종류와 iOS에서 주로 사용되는 데이터베이스에 대해 설명해주세요.
- iOS에서 사용되는 SQLite, Core Data, Realm 등의 특징과 사용 사례를 설명해주세요.
- 관계형 데이터베이스의 ACID 특성과 트랜잭션의 개념에 대해 설명해주세요.
- iOS에서 데이터베이스 스키마 버전 관리와 마이그레이션을 처리하는 방법을 설명해주세요.
- iOS에서 자동 참조 카운팅(ARC)과 가비지 컬렉션(Garbage Collection)의 차이점에 대해 설명해주세요.
- 가비지 컬렉션의 동작 원리와 장단점에 대해 설명해주세요.
- iOS에서 가비지 컬렉션을 사용하지 않는 이유와 ARC를 선택한 배경에 대해 설명해주세요.
- 싱글톤 패턴(Singleton Pattern)이란 무엇이며, 어떤 경우에 사용하나요?
- 싱글톤 패턴의 장단점은 무엇인가요?
- 싱글톤 객체의 초기화 방법과 접근 방법을 설명해주세요.
- 싱글톤 패턴을 구현할 때 주의할 점은 무엇인가요?
- Swift에서 싱글톤 패턴을 구현할때 멀티스레드에 대해서 어떻게 고려해야하나요?
'CS' 카테고리의 다른 글
[CS] iOS 면접 질문 정리 (0) | 2023.04.04 |
---|---|
[CS] 인텔리픽 모의면접 질문 정리 (0) | 2023.03.31 |
[CS] 자료구조 면접 정리 (2) | 2023.03.23 |
[CS] 운영체제 면접 정리 (1) | 2023.03.21 |
[CS] CS 내용 정리 (2) | 2023.03.10 |