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