[레벨 0] iOS의 샌드박스(Sandbox) 개념과 역할, 그리고 앱 간 데이터 공유 방법에 대해 설명해주세요.
·
면접
iOS의 샌드박스(Sandbox)는 앱의 보안과 사용자 데이터 보호를 위한 핵심 기술입니다.샌드박스의 개념샌드박스는 각 앱을 격리된 환경에서 실행하도록 하는 보안 기술입니다. 이는 앱이 시스템 리소스, 파일, 네트워크 등에 대한 접근을 제한하고 통제합니다.앱 격리각 앱은 고유한 홈 디렉토리를 가지며, 다른 앱의 파일이나 리소스에 직접 접근할 수 없습니다.이를 통해 한 앱의 문제가 다른 앱이나 시스템에 영향을 미치는 것을 방지합니다.데이터 보호앱은 자신의 데이터만 접근할 수 있으며, 다른 앱의 데이터를 수정하거나 접근할 수 없습니다.사용자의 개인 정보와 중요한 데이터를 보호합니다.시스템 리소스 보호시스템 파일과 리소스는 앱으로부터 보호됩니다.대부분의 iOS 시스템 파일은 비특권 사용자 "mobile"로 실..
[레벨 0] 메모리 관리 기법 중 iOS에서 사용되는 방식과 그 특징에 대해 설명해주세요.
·
면접
자동 참조 카운팅(ARC)ARC는 iOS의 핵심 메모리 관리 기법입니다.컴파일러가 자동으로 객체의 참조 횟수를 추적하고 관리합니다.개발자가 직접 retain/release를 호출할 필요가 없어 메모리 관리의 복잡성이 크게 줄어듭니다.참조 횟수가 0이 되면 객체를 자동으로 해제합니다.순환 참조 문제를 방지하기 위해 weak와 unowned 참조를 제공합니다.값 타입과 참조 타입값 타입(구조체, 열거형 등)은 스택에 저장되어 빠르고 효율적으로 관리됩니다.참조 타입(클래스)은 힙에 저장되며 ARC로 관리됩니다.메모리 경고 시스템iOS는 앱에 메모리 부족 경고를 보내 불필요한 리소스를 해제할 기회를 제공합니다.지연 초기화(Lazy Initialization)필요한 시점에 객체를 생성하여 메모리 사용을 최적화합니..
[Dart] 4. Classes
·
Flutter
class Person { final String name = 'gwanson'; int age = 26; void greeting() { print("Hi my name is $name"); }}void main() { var person = Person(); person.age = 27; person.greeting();}// 출력// Hi my name is gwansonConstructor methodconstructor method는 class의 이름과 같아야 합니다.class Person { final String name; int age; Person(this.name, this.age); void greeting() {..
[Dart] 3. Functions
·
Flutter
함수 선언void greeting(String name) { print('Hello my name is $name!');// 1String greetingString(String name) { return 'Hello my name is $name';}// 2String greetingString(String name) => "Hello my name is $name";}void main() { greeting('gwanson'); print(greetingString('gwanson'));}리턴값이 없는 함수는 void 로 선언을 하고, 리턴값이 존재하는 함수는 해당하는 타입으로 선언합니다.(예: String,int )named parameterString greeting({ ..
[Dart] 2. Data Types
·
Flutter
Basic Data TypesStringboolnumintdoubleDart에선 자료형이 class로 구성되어 있어 해당하는 자료형에 여러 메소드들이 포함되어 있습니다.ListsList를 선언하는 방법은 변수를 선언하는 방법과 유사합니다.var numbers = [1, 2, 3, 4];List numbers = [1, 2, 3, 4];Dart의 List에는 collection if와 collection for 기능을 지원합니다.collection ifcollection if는List를 생성할 때 조건부로 데이터를 추가할 수 있는 기능입니다.var isFive = true;var numbers = [ 1, 2, 3, 4, if (isFive) 5,];// 위의 코드와 동일v..
[Dart] 1. Variables
·
Flutter
변수Dart에선 변수를 만드는 방법이 크게 두 가지로 나뉩니다.변수의 타입을 선언하는 방법과 컴파일러에서 타입을 추론하게끔 선언하는 방법입니다.타입 선언int, String, double 등추론 타입 선언varDart에선 일반적으로 타입을 선언하는 것보다 var로 변수를 선언하는 것이 권장됩니다. 타입을 선언하는 것은 class 내의 property에 권장됩니다.상수상수를 선언하는 방법은 final과 const 두 가지로 나뉩니다.finalfinal은 다른 언어에서 사용하는 상수와 마찬가지로 선언 후 변경이 되지 않습니다.constconst는 컴파일러가 실행될 때부터 이미 정해진 값이어야 합니다. 예를 들어, 최댓값이 정해져 있는 계산식일 때 최댓값을 const로 선언하는 것입니다. c언어의 #defin..
[레벨 0] 프로세스와 스레드의 차이점, 그리고 iOS에서의 프로세스와 스레드 관리 방법에 대해 설명해주세요.
·
면접
프로세스와 스레드는 모두 프로그램 실행의 단위이지만, 여러 중요한 차이점이 있습니다.정의프로세스 : 실행 중인 프로그램의 인스턴스로, 독립적인 실행 환경을 가집니다.스레드 : 프로세스 내에서 실행되는 더 작은 실행 단위입니다.자원 공유프로세스 : 각 프로세스는 독립적인 메모리 공간과 시스템 자원을 가집니다.스레드 : 같은 프로세스 내의 스레드들은 메모리와 자원을 공유합니다.통신프로세스 간 통신 : 파이프, 소켓 등 복잡한 메커니즘이 필요합니다.스레드 간 통신 : 공유 메모리를 통해 쉽게 데이터를 교환할 수 있습니다.생성 및 종료 비용프로세스 : 생성과 종료에 많은 시스템 자원과 시간이 필요합니다.스레드 : 프로세스에 비해 생성과 종료가 빠르고 경제적입니다.독립성프로세스 : 다른 프로세스의 영향을 직접적으..
[레벨 0] 운영체제의 역할과 iOS의 운영체제 구조에 대해 설명해주세요.
·
면접
운영체제의 역할과 iOS의 운영체제 구조에 대해 설명해주세요. 운영체제는 컴퓨터 시스템의 핵심 소프트웨어로, 다양하고 중요한 역할을 수행합니다.운영체제의 역할자원 관리CPU 스케줄링 및 프로세스 관리메모리 관리 : 한정된 메모리를 효율적으로 할당디스크 파일 관리입출력 장치 관리사용자 인터페이스 제공사용자가 컴퓨터 시스템을 쉽게 사용할 수 있도록 인터페이스 제공GUI(Graphic User Interface) 또는 CLI(Command Line Interface) 형태로 제공하드웨어 추상화응용 프로그램과 하드웨어 사이의 중재 역할하드웨어에 대한 직접 접근을 제어하여 시스템 보호프로그램 실행 환경 제공프로세스 생성, 실행, 종료 관리프로세스 간 동기화 및 통신 메커니즘 제공시스템 보안 및 보호사용자 인증 ..
[레벨 0] iOS 기기에서 사용되는 AP(Application Processor)의 특징과 역할에 대해 설명해주세요.
·
면접
iOS 기기에서 사용되는 AP(Application Processor)의 특징과 역할에 대해 설명해주세요. iOS 기기에서 사용되는 AP(Application Processor)는 모바일 기기의 핵심 구성 요소로, 다양한 기능을 통합한 시스템온칩(SoC) 형태로 설계되어 있습니다.주요 특징통합된 설계 : CPU, GPU, 메모리 컨트롤러, 모뎀 등 여러 기능을 하나의 칩에 통합하여 효율성을 높입니다.저전력 설계 : 모바일 기기의 배터리 수명을 고려하여 전력 효율성을 최적화합니다.고성능 : 복잡한 애플리케이션과 멀티태스킹을 원활하게 처리할 수 있는 성능을 제공합니다.ARM 아키텍처 기반 : 대부분의 iOS 기기용 AP는 ARM 기반의 RISC 아키텍처를 사용하여 효율적인 명령어 처리가 가능합니다.주요 역..
[레벨 0] CPU 아키텍처 종류(예: ARM, x86)와 각 특징에 대해 설명해주세요.
·
면접
CPU 아키텍처 종류(예: ARM, x86)와 각 특징에 대해 설명해주세요.ARM 아키텍처ARM(Advanced RISC Machine) 아키텍처는 RISC(Reduced Instruction Set Computing) 원칙을 기반으로 합니다.단순하고 효율적인 명령어 집합저전력 소비로 배터리 수명 연장에 유리모바일 기기, 태블릿, IoT 장치에 널리 사용됨확장성이 뛰어나 다양한 성능 수준의 프로세서 설계 기능로드 / 스토어 아키텍처로 메모리 접근 최적화파이프라이닝을 통한 병렬 처리로 성능 향상x86 아키텍처x86 아키텍처는 CISC(Complex Instruction Set Computing) 설계를 기반으로 합니다.복잡하고 다양한 명령어 집합높은 성능과 처리 능력데스크톱 컴퓨터, 노트북, 서버에 주로 ..