├── 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 |
--------------------------------------------------------------------------------