├── ComputerBasic └── README.md ├── DesignPattern └── README.md ├── Git └── README.md ├── Network └── README.md ├── OrdinaryQuestions └── README.md ├── README.md ├── Swift └── README.md └── iOS └── README.md /ComputerBasic/README.md: -------------------------------------------------------------------------------- 1 | ## Part 2. 컴퓨터 기본(Computer Basic) 2 | ### 면접에서 최다 빈출되는 꼭 알아야 할 중요한 컴퓨터 기본 개념들을 모아봤습니다.
주니어 개발자라면 이 정도는 꼭 알고 계셔야 해요 :) 3 | 4 |
5 | 6 | #### Basic 7 | 8 | * 스레드(thread) 와 프로세스(Process) 의 차이점 ? 9 | 10 | * Program vs Process 11 | 12 | * 객체 지향 프로그래밍(OOP) 의 정의와 특징 13 | 14 | * 함수형 프로그래밍(FP) 의 정의와 특징 15 | 16 | * 'Call by value' vs 'Call by reference' 17 | 18 | * 동기 vs 비동기 19 | 20 | * 메모리 구조 21 | 22 | * 스택과 링크드리스트와 리스트의 차이점을 설명해 보세요. 23 | 24 | * 64비트와 32비트의 차이 25 | 26 | * Mutable 객체 vs Immutable 객체. 27 | 28 | * 일급 객체란 무엇일까요 ? 29 | 30 |
31 | 32 | #### 자료구조 33 | 34 | * 업데이트 예정 35 | 36 |
37 | 38 | #### 알고리즘 39 | 40 | * 업데이트 예정 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /DesignPattern/README.md: -------------------------------------------------------------------------------- 1 | ## Part 6. 디자인 패턴(Design Pattern) 2 | ### 면접에서 최다 빈출되는 꼭 알아야 할 중요한 디자인 패턴 개념들을 모아봤습니다.
주니어 개발자라면 이 정도는 꼭 알고 계셔야 해요 :) 3 | 4 |
5 | 6 | #### Architecture Design Pattern 7 | 8 | * MVC 패턴(Model - View - Controller) 9 | 10 | * MVVM 패턴(Model - View - ViewModel) 11 | 12 | * MVP 패턴 13 | 14 | * 위 패턴들 간의 차이를 설명할 수 있나요? 15 | 16 |
17 | 18 | #### Programming Design Pattern 19 | 20 | * [Delegate](https://atelier-chez-moi.tistory.com/100) 21 | 22 | * Delegate vs Notification ( 차이와 활용 ) 23 | 24 | * [Singleton](https://atelier-chez-moi.tistory.com/95) 25 | -------------------------------------------------------------------------------- /Git/README.md: -------------------------------------------------------------------------------- 1 | ## Part 7. 깃(Git) 2 | ### 면접에서 최다 빈출되는 꼭 알아야 할 중요한 Git 개념들을 모아봤습니다.
주니어 개발자라면 이 정도는 꼭 알고 계셔야 해요 :) 3 | 4 |
5 | 6 | #### Git 7 | 8 | * Git 이나 SVN 등의 경험이 있는지 ? 9 | 10 | * Git workflow 에 대해 설명할 수 있는지 ( 4 가지 ) ? 11 | 12 | * Git conflict 에 대한 설명 ? 경험이 있었다면 해결을 어떻게 했는가 ? 13 | -------------------------------------------------------------------------------- /Network/README.md: -------------------------------------------------------------------------------- 1 | ## Part 5. 네트워크(Network) 2 | ### 면접에서 최다 빈출되는 꼭 알아야 할 중요한 네트워크 개념들을 모아봤습니다.
주니어 개발자라면 이 정도는 꼭 알고 계셔야 해요 :) 3 | 4 |
5 | 6 | #### Network 7 | 8 | * REST API 9 | 10 | * 서버와 통신해서 데이터를 어떻게 가져왔나요 ? 11 | 12 | * Alamofire 혹은 AFNetworking 등의 라이브러리 사용 경험이 있나요 ? 네트워크 연동 라이브러리를 왜 사용했으며, 장점과 단점을 설명할 수 있나요 ? 13 | 14 | * 인터넷이 느리고 불안정한 지역에서 서버로 API를 호출하여 10만 개의 데이터를 리스트로 보여줘야 한다. 이 문제를 해결하는 과정 및 그 과정 중에 구현할 요소들과 단계별 고려사항은? 15 | 16 | * JSON 구조는 어떻게 생겼나요 ? 17 | 18 | * XML 과 JSON 의 차이점에 대해 설명해주세요. 19 | 20 | * OSI 7계층에 대해 설명해주세요. 21 | -------------------------------------------------------------------------------- /OrdinaryQuestions/README.md: -------------------------------------------------------------------------------- 1 | ## Part 1. 일상적인 질문들(Ordinary Questions) 2 | ### 기술적인 부분 이외의 일상적 질문들을 모아봤습니다.
한번 쯤 읽어보고 자신의 생각을 정리하시는 용도로 사용해주세요. 3 | 4 |
5 | 6 | #### Introduce Yourself 7 | 8 | * (짧게) 자기 소개 해주세요. 9 | 10 | * 지원 동기는 무엇인가요 ? 11 | 12 | * 자신의 단점을 극복하기 위해 어떤 노력을 하는가 ? 13 | 14 | * 당신의 꿈은 무엇인가요 ? 15 | 16 |
17 | 18 | #### You & iOS 19 | 20 | * iOS 개발자가 되기로 한 이유는 ? 21 | 22 | * 왜 Android 가 아닌 iOS 인가 ? 23 | 24 | * 개발할 때, 주로 스토리보드를 많이 쓰는지, xib 를 많이 쓰는지 ? 25 | 26 | * (팀 프로젝트 경험이 있다면) 어떤 문제점이 있었고, 어떻게 해결했는지 ? 27 | 28 | * 앱 출시한 경험이 있나요(= 앱스토어 배포 경험) ? 29 | 30 | * Objective-C 프로젝트를 Swift 로 이전한 경험이 있나요 ? 31 | 32 | * 사용해본 iOS 개발 언어는 무엇인가요 ? 33 | 34 | * 어떻게 iOS 개발을 공부하는지 ? 35 | 36 | * 자신이 좋아하는 개발 방법론이 있다면 간단한 설명과 이유를 말씀해주실 수 있나요 ? 37 | 38 | * Hybrid App 개발 경험이 있나요 ? 39 | 40 | * 최근 동향이나 소식은 어떻게 접하는지 ? 41 | 42 | * 기기별 스크린 단편화에 대한 대응은 어떻게 할 것인지 ? 43 | 44 | * 개발을 하다 막히는 부분은 어떻게 해결하나요 ? 45 | 46 | * 자주 사용하는 오픈소스는 어떤 것들이 있나요? 그 오픈소스를 선택한 이유는 ? 47 | 48 | * 참여한 오픈소스가 있나요? 49 | 50 | * WWDC 세션중 관심 있게 보는 세션은 어떤 것이 있나요 ? 신기술 습득은 어떤 식으로 하나요 ? 51 | 52 |
53 | 54 | ### Company 55 | 56 | * 회사에 대해 궁금한 점은 없나요 ? 57 | 58 | * (면접 지원한 회사에 출시한 앱이 있다면) 앱을 사용해봤는지 ? 간단한 느낌을 말해주세요. 59 | 60 | * 좋은 회사란 어떤 회사일까요 ? 61 | 62 | * 스타트업을 선호한다면 어떤 부분으로 선호하게 되셨나요 ? 63 | 64 | * 출근은 언제부터 가능한가요 ? 65 | 66 | ### Ask questions about .. 67 | 68 | * 현재 직책이 시장에 나오게 된 이유는 무엇인가요 ? 69 | 70 | * 이 회사에서 일하면 좋은 점은 무엇인가요 ? 71 | 72 | * 해당 직책에서 성과가 측정되는 기준은 무엇인가요 ? 73 | 74 | * 커리어 개발 및 지원과 관련해 회사에 기대할 수 있는 점은 무엇인가요 ? 75 | 76 | * 해당 직무의 조직에서의 역할은 무엇인가요 ? 77 | 78 | * 면접 후 다음 단계는 무엇이고, 어떻게 진행되나요 ? 79 | 80 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Technical Interview for iOS Developer ! 2 | ### 한 페이지로 살펴보는 iOS 신입 개발자가 꼭 알아야 할 내용에 대한 링크 모음집입니다. 3 | ### 제목을 누르시면 해당 질문으로 이동합니다. 4 |
5 |
6 |
7 | 8 | ### Part 1. [일상적인 질문들(Ordinary Questions)](https://github.com/inswag/Technical_interview_for_iOS_Dev/tree/master/OrdinaryQuestions) 9 | 10 | * 기술적인 부분 이외의 면접에서 질문 받을 수 있는 보통의 질문들을 모아봤습니다. 11 | 12 |
13 | 14 | ### Part 2. [컴퓨터 기본(Computer Basic)](https://github.com/inswag/Technical_interview_for_iOS_Dev/tree/master/ComputerBasic) 15 | 16 | * 면접에서 질문받을 수 있는 컴퓨터 기본 지식을 모아봤습니다. 17 | 18 |
19 | 20 | ### Part 3. [스위프트(Swift)](https://github.com/inswag/Technical_interview_for_iOS_Dev/tree/master/Swift) 21 | 22 | * 면접에서 질문받을 수 있는 스위프트 핵심 개념을 모아봤습니다. 23 | 24 |
25 | 26 | ### Part 4. [iOS](https://github.com/inswag/Technical_interview_for_iOS_Dev/tree/master/iOS) 27 | 28 | * 면접에서 질문받을 수 있는 iOS 핵심 개념을 모아봤습니다. 29 | 30 |
31 | 32 | ### Part 5. [네트워크(Network)](https://github.com/inswag/Technical_interview_for_iOS_Dev/tree/master/Network) 33 | 34 | * 면접에서 질문받을 수 있는 네트워크 핵심 개념을 모아봤습니다. 35 | 36 |
37 | 38 | ### Part 6. [디자인 패턴(Design Pattern)](https://github.com/inswag/Technical_interview_for_iOS_Dev/tree/master/DesignPattern) 39 | 40 | * 면접에서 질문받을 수 있는 디자인 패턴을 모아봤습니다. 41 | 42 |
43 | 44 | ### Part 7. [Git](https://github.com/inswag/Technical_interview_for_iOS_Dev/tree/master/Git) 45 | 46 | * 면접에서 질문받을 수 있는 Git 에 관련된 내용을 모아봤습니다. 47 | 48 |
49 | -------------------------------------------------------------------------------- /Swift/README.md: -------------------------------------------------------------------------------- 1 | ## Part 2. 스위프트(Swift) 2 | ### 면접에서 최다 빈출되는 꼭 알아야 할 중요한 Swift 개념들을 모아봤습니다.
주니어 개발자라면 이 정도는 꼭 알고 계셔야 해요 :) 3 | 4 |
5 | 6 | #### Swift 7 | 8 | * 클로저(Closure) 9 | * 일회용 함수를 작성할 수 있는 구문. 익명(Anonymous) 함수라고도 불린다. Objective-C 에서는 블록(Block) 이 클로저의 역할을 했었다. 스위프트는 함수형 프로그래밍을 채택하고 있으므로, 클로저는 중요한 역할을 담당한다. Closure 는 변수나 상수가 선언된 위치에서 참조(Reference)를 획득(capture)하고 저장할 수 있다. 10 | 11 | * "변수에 함수를 선언합니다. 그리고 마찬가지로 이 변수는 함수처럼 호출도 가능합니다. 따라서 코드를 간결하고 직관적으로 작성하는데 많은 도움을 주는 기능입니다. 물론 프로그래머가 재사용할일이 많다면, 12 | 따로 함수를 만들어주는게 맞겠지만 그게 아니라면 일일히 어떤 함수를 찾아갈 필요없이 클로저를 사용해서 바로 내용을 확인할 수 있겠습니다. 클로저가 직관적이고 간결한 코드 작성에 크게 기여하는 부분은 13 | 축약형이 따로 존재한다는 것인데요. 기본문법 형태인 기본클로저에서부터 후행클로저, 타입유추, 단축인자생략, return 키워드 삭제, 연산자 함수까지 간결하게 축약할 수가 있습니다. 다만, 지나치게 축약하게 14 | 되면 해당 코드를 처음보는 사람은 내용을 인지하지 못하는 경우도 있습니다." 15 | 16 | * "클로저의 또다른 아주 중요한 특성 중에 하나가 Escaping Closure입니다. 클로저가 함수로부터 Escape한다는 것은 클로저가 인자로 전달되지만 함수가 반환된 후 실행된다는 것을 의미합니다. 17 | 이 개념은 기존에 알고 있던 Scope 개념을 무시하는 개념입니다. 함수 안에서 선언된 변수가 로컬 변수의 영역을 뛰어넘는다는 말이 되기 때문입니다. 이것의 중요한 점은 Escaping Closure을 이용하면 18 | A함수가 마무리된 상태에서만 B 함수가 실행되도록 코드를 작성할 수 있고, 그것은 곧 비동기 함수에도 같은 맥락으로 적용할 수 있다는 뜻이 됩니다. 예를 하나 들어 보겠습니다. 만약 서버에서 JSON형식의 19 | 데이터를 가져와 화면에 보여주는 앱을 만든다고 생각해보면 HTTP통신을 위해 Alamofire 라이브러리를 사용합니다. Alamofire의 메소드는 서버로 Request를 전송하고 GET방식으로 JSON형식의 데이터를 20 | 받아와서 Response객체에 할당됩니다. 일반적으로 서버에 Request를 전송하고 Response를 받아오는 함수들은 비동기로 작동하여 Request를 보낸 직후 반환되어 버리는데, 바로 이 부분에서 responseJSON 21 | 메서드가 Escaping Closure의 형태로 작성되어 있기 때문에 값이 전부 들어온 이후에야 Data타입이 JSON 형식으로 변경될 수 있는 것입니다. 아래 completionHandler 부분을 보면 responseJSON 메서드가 22 | Escaping Closure 형태로 작성되어 있는 것을 볼 수 있습니다." 23 | 24 |
25 | 26 | * AutoLayout 27 | 28 | * IBDesignable & IBInspectable 29 | 30 | * Swift vs Objective-C 31 | 32 | * Cocoapods 33 | 34 | * Xcode 내 Cocoa 환경에서 작업하는 프로젝트에서 오픈 소스 라이브러리(Open source library) 를 사용할 수 있게 해주는 역할 및 관리해주는 툴로서, 디펜던시 매니저(Dependency Manager) 라고도 불린다. 35 | 36 |
37 | 38 | * ARC vs non-ARC / (ARC 관련) Strong, Weak, Unowned 의 개념 39 | 40 | * Apple 공식 문서 번역 : ARC [Part. 1](http://atelier-chez-moi.tistory.com/37) / [Part. 2](http://atelier-chez-moi.tistory.com/40) 41 | 42 |
43 | 44 | * ARC와 Block, GCD 와 연관해서 설명해보세요 45 | 46 | * Static 키워드 47 | 48 | * Overloading vs Overriding 49 | 50 | * Access Control 의 종류와 특징 51 | 52 | * Delegate 와 Protocol 의 차이는 무엇일까요 ? 53 | 54 | * Rxswift 란 무엇일까요 ? 55 | 56 | * HIG(Human Interface Guideline) 을 알고 있나요 ? 57 | 58 | * 옵셔널(Optional) 의 개념에 대해 설명할 수 있나요 ? 59 | * 옵셔널은 스위프트에서 새롭게 등장한 개념으로, 프로그램의 안정성을 높이기 위해서 마련되었다고 볼 수 있다. 값을 처리하는 과정에서 잠재적으로 값이 없는 문제가 발생할 수 있다. 이럴 경우 오류를 발생시키는 것이 아니라, 값이 없다는 뜻으로서 'nil'을 반환한다. 결국 옵셔널 타입이 가질 수 있는 값은 nil 인 경우와 nil 이 아닌 경우가 있다. 60 | 61 | * 그렇다면 옵셔널 값은 어떻게 사용해야 할까 ? 대표적인 방법으로 옵셔널 바인딩을 사용한다. 이 방법은 옵셔널 값이 nil 이 아닌 경우 안전한 방법으로 그 값을 받아내는 것을 뜻한다. if 문을 이용하여 nil 여부를 확인하고 nil 이 아닐 경우 값을 할당함으로서 옵셔널을 해제할 수 있다. 62 | 63 | * 물론, 스위프트는 옵셔널과 옵셔널이 아닌 값은 철저히 다른 타입으로 인식한다. 쉬운 예로 Int 와 Optional Int 는 철저히 다른 타입이 된다. Optional Int 를 옵셔널 바인딩 혹은 강제 해제로 옵셔널을 해제시켜주어야 비로소 같은 타입이 된다. 64 | 65 |
66 | 67 | #### (Additional) Objective-C 68 | 69 | * Block vs Non-block ? 70 | 71 | * Block 코드가 무엇이며 사용 방법과 장점, 단점은 ? 72 | 73 | * assign / retain 의 설명과 차이점은 ? 74 | 75 | * delegate 프로퍼티를 assign 속성을 주는 이유? 76 | 77 | * Auto release pool을 동작 설명? 78 | 79 | * NSString *b = @"test"; 80 | NSString *a = [b copy]; 81 | 에서 a와 b는 같은가? (주소값 포함) 82 | -------------------------------------------------------------------------------- /iOS/README.md: -------------------------------------------------------------------------------- 1 | ## Part 4. iOS 2 | ### 면접에서 최다 빈출되는 꼭 알아야 할 중요한 iOS 개념들을 모아봤습니다.
다소 어려운 개념이 중간 중간 포함되어 있습니다. 쉬운게 아니라 어려운게 맞습니다 :) 3 | 4 |
5 | 6 | #### iOS 7 | 8 | * App Life Cycle 9 | 10 | ㄱ. [앱 생명 주기와 실행상태 정리](https://atelier-chez-moi.tistory.com/29) 11 | 12 | * AppDelegate 에서 앱의 상태 변화에 따라 호출되는 함수에 대해 명확히 설명할 수 있나요 ? 13 | 14 | * View Life Cycle 15 | 16 | * 스레드(thread) 와 프로세스(Process) 의 차이점 ? / Program vs Process 17 | 18 | ㄱ. [두 가지 한방 정리](https://atelier-chez-moi.tistory.com/36) 19 | 20 | * [객체 지향 프로그래밍(OOP) 의 정의와 특징](https://atelier-chez-moi.tistory.com/26) 21 | 22 | * ['Call by value' vs 'Call by reference'](https://atelier-chez-moi.tistory.com/45) 23 | 24 | * 동기 vs 비동기 25 | 26 | * [메모리 구조 와 스택](https://atelier-chez-moi.tistory.com/39) 27 | 28 | * [링크드리스트(Linked List) 란?](https://atelier-chez-moi.tistory.com/90) 29 | 30 | * 64비트와 32비트의 차이 31 | 32 | * Mutable 객체 vs Immutable 객체. 33 | 34 | * 샌드박스란 무엇이고 왜 샌드박스를 사용하는지? 35 | 36 | * Delegate / Notification 의 차이와 활용도 37 | 38 | * push 서비스 등록시 절차과정 39 | 40 | * 카테고리 확장과 / 서브 클래싱 이 둘의 차이와 각각의 활용 41 | 42 | * Swift 와 Objective - c 를 동일한 코드를 구현할때 서로간에 장점과 단점은? 43 | 44 | * NSArray, NSDictionary, NSSet의 쓰임 45 | 46 | * Table View 혹은 Collection View 에서 꼭 필요한 Delegate 와 Function 은 무엇이고 어떤 역할을 하나요 ? 47 | 48 | ㄱ. 끝이 '-DataSource' 나 '-Delegate' 로 끝나는 함수들이 꼭 필요한 함수이다. DataSource 의 경우 테이블 뷰나 컬렉션 뷰에 데이터를 제공하는 역할을 하고, Delegate 의 경우에는 이벤트가 발생했을 경우 처리할 메서드를 제공한다. 49 | 50 | * Instrument 를 활용하여 앱의 Memory 사용량을 확인하고 리팩토링해본 경험이 있나요? 51 | 52 | * 이미지를 Memory-Cache 와 Disk-Cache 를 이용해 보았다면, 설명해볼 수 있나요 ? 53 | 54 | * GCD(Grand Central Dispatch)의 개념을 설명할 수 있나요 ? 55 | 56 | ㄱ. [초보자를 위한 Grand Central Dispatch](https://atelier-chez-moi.tistory.com/43) 57 | 58 | * (Thread 관련) 화면이 멈추지 않게 하려면 어떤 스레드를 건드리지 말아야 하나요 ? 59 | 60 | ㄱ. Main Thread 에서 Sync 를 사용하면 안된다. 61 | 62 | * Background Task 를 이용해 백그라운드에서 동작하는 작업을 설명할 수 있나요 ? 63 | 64 | * CustomScheme 를 이용해 딥링크 기능 구현을 설명할 수 있나요 ? 65 | 66 | * Universal Link를 사용해 웹에서 앱을 연동하는 것을 설명할 수 있나요 ? 67 | 68 | * Google Analytics, Tune, Fabric등 모바일 애널리틱스 툴을 연동한 경험이 있나요 ? 69 | 70 | * Push 서비스를 구현한 경험이 있나요 ? 71 | 72 | * UICollectionView와 UITableView의 스크롤 속도를 최적화를 위해 어떠한 방법을 사용해보셨나요? 73 | 74 | * 선호하는 UI 구현 방식에 대해 설명해주세요. 75 | 76 | * iPhone의 다양한 해상도를 지원하기 위해 어떤 방식을 활용하고 있는지, 다양한 해상도를 지원하기 위해 특별히 고려한 것들이 있는지 설명해주세요. 77 | 78 | * OpenURLScheme 을 사용해 보았나요 ? 79 | 80 | * 상단 상태바의 색을 변경하는 방법은 ? 81 | 82 | 83 |
84 | 85 | --------------------------------------------------------------------------------