- 컴퓨터 구조와 관련하여 CPU, RAM, 저장장치의 역할과 상호 작용에 대해 설명해주세요.
- CPU(중앙 처리 장치) - 컴퓨터의 두뇌로 모든 계산과 명령어 실행을 담당
- RAM(랜덤 접근 메모리) - 임시 데이터 저장소로 CPU가 현재 작업하고 있는 데이터와 명령어를 보관. 전원이 꺼지면 사라짐
- 저장장치: 데이터와 파일을 영구적으로 저장하는 곳. 하드드라이브나 SSD.
- 상호작용
- CPU는 RAM에서 데이터와 명령어를 읽어 처리하고, 결과를 다시 RAM에 저장
- RAM은 작업중인 데이터를 임시로 보관하며, CPU가 빠르게 접근할 수 있게 함
- 저장장치는 데이터와 프로그램을 영구적으로 저장하고. 필요할 때 저장 장치에서 RAM으로 이동하여 CPU가 접근 및 처리할 수 있게 함
- 캐시 메모리의 개념과 종류, 역할에 대해 설명해주세요.
- 개념: CPU가 빠르게 접근할 수 있는 작은 용량의 고속 메모리
- 종류: L1, L2, L3. L1이 가장 빠르고 작고, L3으로 갈수록 느리지만 용량이 큼
- 역할: 컴퓨터 성능을 향상시켜 데이터 처리와 접근 속도를 빠르게 해서 시스템 효율을 증가 시킴
- CPU 아키텍처의 종류(예: ARM, x86)와 특징에 대해 설명해주세요.
- ARM: 스마트폰, 태블릿, 임베디드 시스템 등에서 주로 사용되며, 간단한 명령어 세트와 높은 에너지 효율성을 가지고 있음
- x86: 데스크톱, 서버, 노트북 등 고성능 환경에서 주로 사용. 복잡한 명령어세트와 높은 호환성
- iOS 기기에서 사용되는 AP(Application Processor)의 특징과 역할에 대해 설명해주세요.
- 특징
- 고성능: 앱 실행과 고해상도 그래픽 처리
- 에너지 효율: 배터리 수명 최대화
- 통합기능: CPU, GPU, 보안 기능 등 여러기능 한 칩 통합
- 보안: 개인 정보와 데이터 안전하게 보호
- 역할: 앱 실행, 멀티미디어 처리, 데이터 관리, 사용자 인터페이스 제어, 네트워킹
- 운영체제의 역할과 iOS에서의 운영체제 구조에 대해 설명해주세요.
- 역할: 하드웨어 관리, 소프트웨어 실행, 데이터 보안 및 관리, 사용자와 소통
- 구조
- 코어 OS 레이어: 기본적 하드웨어 관리와 보안 기능 담당
- 코어 서비스 레이어: 데이터 관리, 네트워크 통신 등 고급 기능 제공
- 미디어 레이어: 오디오, 비디오 처리 가은 멀티미디어 기능 지원
- 코코아 터치 레이어: 사용자 인터페이스 인터랙션
- 프로세스와 스레드의 차이점, iOS에서의 프로세스와 스레드 관리 방법에 대해 설명해주세요.
- 프로세스: 독립적 메모리 공간을 가진 실행 단위
- 스레드: 프로세스 내에서 메모리를 공유하며 실행되는 단위
- iOS에서 관리 방법: 앱당 별도 프로세스로 관리, 멀티스레딩을 위해 GCD와 같은 고수준 API를 제공
- 메모리 관리 기법 중 iOS에서 사용되는 방식과 그 특징에 대해 설명해주세요.
- ARC: 객체의 참조 횟수를 추적하여 메모리 관리를 자동화 하는 기법
- 특징
- 참조 카운팅 기반: ARC는 객체가 더이상 필요하지 않게 될때 자동으로 메모리를 해제. 참조 될 때 증가, 참조 해제될때 감소
- 컴파일 시간에 작동
- 메모리 누수 방지
- 자원관리 최적화
- iOS의 샌드박스(Sandbox) 개념과 역할, 앱 간 데이터 공유 방법에 대해 설명해주세요.
- 샌드박스: 앱의 보안과데이터 보호를 강화하는 메커니즘
- 샌드박스 역할
- 보안 강화: 각 앱을 독립된 환경에서 실행함으로써 악의적 소프트웨어로부터 시스템과 사용자 데이터를 보호
- 데이터 프라이버시: 앱이 사용자의 명시적 허가 없이 민감한 정보에 접근할 수 없게 함
- 자원 관리: 앱이 시스템 자원을 과도하게 사용하는 것을 방지하여, 전체 시스템의 안정성과 효율성 유지
- 앱 격리: 앱이 다른 앱의 데이터나 코드에 직접적으로 접근할 수없게 함으로써, 앱간 간섭 방지
- 데이트 공유 방법: App Group, URL Schemes, Share Extensions, UIActivityViewController
- iOS에서의 메모리 구조와 관리 방식에 대해 자세히 설명해주세요.
- 힙, 스택, 코드.
- 관리 방식
- ARC 사용.
- 자동 참조 카운팅: 객체에 대한 모든 강한 참조가 사라지면 객체는 메모리에서 해제
- 순환 참조 방지
- 메모리 경고 처리: 메모리 사용량이 임계치에 도달하면 메모리 경고 발생
- iOS 앱의 메모리 구조(힙, 스택, 코드 영역 등)와 각 영역의 특징에 대해 설명해주세요.
- Code Segment: 실행가능한 코드가 저장되는 영역. 컴파일된 앱 기계 코드가 위치
- Data Segment: 초기화된 전역 변수, 정적 변수가 저장되는 영역. 런타임에 수정될 수 있음
- BSS Segment: 초기화되지 않은 전역 변수, 정적 변수가 저장되는 영역. 실행 시 0 or null
- Heap: 동적 메모리 할당이 이루어지는 영역. 앱 실행 시 필요에 따라 메모리 할당 및 해제. 객체의 생성과 관련된 메모리가 포함
- Stack: 함수의 호출과 지역 변수가 저장되는 영역. 함수 호출 시 쌓이고, 반환시 스택에서 제거
- 힙 영역에서 객체가 어떻게 할당되고 관리되는지 설명해주세요.
- 객체 생성 → 메모리 할당 → 메모리 초기화 → 사용
- 스택 영역에서 함수 호출과 로컬 변수의 메모리 할당 및 해제 과정을 설명해주세요.
- 함수 호출 시
- 스택 프레임 생성: 함수가 호출 되면 실행에 필요한 정보(매개변수, 로컬 변수, 반환 주소 등)를 담은 스택 프레임이 스택 영역에 생성
- 메모리 할당: 함수의 매개 변수와 로컬 변수가 스택 프레임 내에 자동으로 메모리를 할당
- 함수 실행 중
- 로컬 변수 사용: 함수 내에서 선언된 로컬 변수들은 할당된 메모리 공간에서 값을 저장하고, 필요에 따라 이 값을 사용
- 함수 반환 시
- 메모리 해제: 함수가 종료되면, 함수의 스택 프레임과 함께 그 안의 로컬 변수들이 사용하던 메모리가 자동으로 해제
- 반환 주소로 복귀: 함수가 종료되면서, 스택에 저장되어 있던 반환 주소를 통해 제어가 호출한 함수(caller)로 다시 이동
- 네트워크 프로토콜 스택과 iOS에서의 네트워크 통신 방식에 대해 설명해주세요.
- 네트워크 프로토콜 스택
- 응용 계층: 사용자와 직접적 상호작용하는 네트워크 프로세스 담당. HTTP, FTP, SMTP등
- 전송 계층: 네트워크간 데이터 전송을 담당. TCP, UDP
- 인터넷 계층: 데이터 패킷을 송수신하는 라우팅 기능을 담당. IP
- 링크 계층: 물리적 네트워크 하드웨어아 직접 상호작용, 데이터를 전기적 신호로 변환해 전송. Ethernet, WiFi
- iOS 네트워크 통신 방식
- URLSession - 고수준 API, 웹서비스 호출, 웹 컨텐츠 다운로드
- Network Framework - 저수준API. 실시간 데이터 전송,사용자 정의 네트워킹 프로토콜 구현, 네트워크 연결 상태 관리
- WebSocket - 실시간 양방향 통신
- Bonjour
- HTTP와 HTTPS의 차이점, iOS에서의 보안 통신 방법에 대해 설명해주세요.
- 차이점
- 보안: HTTPS는 SSL/TLS를 통해 데이터를 암호화해 보안성 제공
- 포트: HTTPS는 80번, HTTP는 443번
- 성능: HTTPS는 암호화 과정 때문에 미세하게 느릴 수 있음
- 보안 통신 방법
- TCP와 UDP의 차이점에 대해서 설명해 주세요.
- 소켓 통신에 대해 설명해주세요.
- REST API와 iOS에서의 네트워크 요청 및 응답 처리 방법에 대해 설명해주세요.
- iOS에서 메모리 사이즈와 관련된 개념과 고려 사항에 대해 설명해주세요.
- 알고리즘의 시간 복잡도와 공간 복잡도의 개념, 빅오 표기법에 대해 설명해주세요.
- 자료구조의 종류와 iOS 개발에서 자주 사용되는 자료구조에 대해 설명해주세요.
- 동시성 프로그래밍의 개념과 iOS에서의 동시성 처리 방식에 대해 설명해주세요.
- 암호화와 보안의 기본 개념, iOS 앱 보안을 위한 방안에 대해 설명해주세요.
- 가상 메모리(Virtual Memory)의 개념과 동작 원리에 대해 설명해주세요.
- iOS 앱의 메모리 사용량 최적화를 위한 방안과 고려 사항에 대해 설명해주세요.
- 데이터베이스의 종류와 iOS에서 주로 사용되는 데이터베이스에 대해 설명해주세요.
- iOS에서 자동 참조 카운팅(ARC)과 가비지 컬렉션(Garbage Collection)의 차이점에 대해 설명해주세요.