├── .github └── workflows │ └── auto-assign-with-issue-comment.yml └── README.md /.github/workflows/auto-assign-with-issue-comment.yml: -------------------------------------------------------------------------------- 1 | name: auto assign with comment 2 | on: 3 | issue_comment: 4 | types: [created] 5 | jobs: 6 | # 댓글 내용의 키워드 'http'가 있는 모든 댓글 정보 7 | job1: 8 | name: find comments 9 | runs-on: ubuntu-latest 10 | outputs: 11 | auth: ${{ steps.fcid.outputs.comments }} 12 | steps: 13 | - name: find 14 | uses: actions-cool/issues-helper@v1.11 15 | id: fcid 16 | with: 17 | actions: 'find-comments' 18 | token: ${{ secrets.GITHUB_TOKEN }} 19 | issue-number: ${{ github.event.issue.number }} 20 | body-includes: 'http' 21 | # job1의 outputs에서 가장 마지막 댓글 작성자만 필터링 22 | job2: 23 | needs: job1 24 | name: filter comment auth 25 | runs-on: ubuntu-latest 26 | outputs: 27 | out: ${{ steps.filter.outputs.comment_id }} 28 | steps: 29 | - name: set output 30 | id: set 31 | run: | 32 | echo ::set-output name=json_var::'${{ needs.job1.outputs.auth }}' 33 | - name: filter auth 34 | id: filter 35 | run: | 36 | echo ::set-output name=comment_id::"$(echo $json_var | jq -r '.[-1].auth')" 37 | env: 38 | json_var: ${{ steps.set.outputs.json_var}} 39 | # job2의 댓글 작성자를 assignees로 등록 40 | job3: 41 | needs: [job1, job2] 42 | name: add a ssigness 43 | runs-on: ubuntu-latest 44 | steps: 45 | - name: print 46 | run: echo ${{ needs.job2.outputs.out }} 47 | - name: add 48 | uses: actions-cool/issues-helper@v1.11 49 | with: 50 | actions: 'add-assignees' 51 | token: ${{ secrets.GITHUB_TOKEN }} 52 | issue-number: ${{ github.event.issue.number }} 53 | assignees: "${{needs.job2.outputs.out }}" 54 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # iOSInterviewquestions 2 | From [JeaSungLEE/iOSInterviewquestions](https://github.com/JeaSungLEE/iOSInterviewquestions) 3 | 4 | 매주 월, 화, 목(오후 7시)에 각자 정리한 내용을 공유합니다. zoom을 이용해 온라인으로 진행하고 있습니다. 5 | 6 | ## Swift 7 | - [Optional 이란 무엇인지 설명하시오.](../../issues/1) 8 | - [Fast Enumeration 이란 무엇인지 설명하시오.](../../issues/2) 9 | - [Struct 가 무엇이고 어떻게 사용하는지 설명하시오.](../../issues/3) 10 | - [instance 메서드와 class 메서드의 차이점을 설명하시오.](../../issues/4) 11 | - [Delegate 패턴을 활용하는 경우를 예를 들어 설명하시오.](../../issues/5) 12 | - [Singleton 패턴을 활용하는 경우를 예를 들어 설명하시오.](../../issues/6) 13 | - [KVO 동작 방식에 대해 설명하시오.](../../issues/7) 14 | - [Delegates와 Notification 방식의 차이점에 대해 설명하시오.](../../issues/8) 15 | - [멀티 쓰레드로 동작하는 앱을 작성하고 싶을 때 고려할 수 있는 방식들을 설명하시오.](../../issues/9) 16 | - [MVC 구조에 대해 블록 그림을 그리고, 각 역할과 흐름을 설명하시오.](../../issues/10) 17 | - [프로토콜이란 무엇인지 설명하시오.](../../issues/11) 18 | - [Hashable이 무엇이고, Equatable을 왜 상속해야 하는지 설명하시오.](../../issues/12) 19 | - [mutating 키워드에 대해 설명하시오.](../../issues/13) 20 | - [탈출 클로저에 대하여 설명하시오.](../../issues/14) 21 | - [Extension에 대해 설명하시오.](../../issues/15) 22 | - [접근 제어자의 종류엔 어떤게 있는지 설명하시오.](../../issues/16) 23 | - [defer란 무엇인지 설명하시오.](../../issues/17) 24 | - [defer가 호출되는 순서는 어떻게 되고, defer가 호출되지 않는 경우를 설명하시오.](../../issues/18) 25 | 26 | ## iOS 27 | - [Bounds 와 Frame 의 차이점을 설명하시오.](../../issues/19) 28 | - [실제 디바이스가 없을 경우 개발 환경에서 할 수 있는 것과 없는 것을 설명하시오.](../../issues/20) 29 | - [앱이 foreground에 있을 때와 background에 있을 때 어떤 제약사항이 있나요?](../../issues/21) 30 | - [상태 변화에 따라 다른 동작을 처리하기 위한 앱델리게이트 메서드들을 설명하시오.](../../issues/22) 31 | - [scene delegate에 대해 설명하시오.](../../issues/23) 32 | - [앱이 In-Active 상태가 되는 시나리오를 설명하시오.](../../issues/24) 33 | - [NSOperationQueue 와 GCD Queue 의 차이점을 설명하시오.](../../issues/25) 34 | - [GCD API 동작 방식과 필요성에 대해 설명하시오.](../../issues/26) 35 | - [자신만의 Custom View를 만들려면 어떻게 해야하는지 설명하시오.](../../issues/27) 36 | - [iOS 앱을 만들고, User Interface를 구성하는 데 필수적인 프레임워크 이름은 무엇인가?](../../issues/28) 37 | - [Foundation Kit은 무엇이고 포함되어 있는 클래스들은 어떤 것이 있는지 설명하시오.](../../issues/29) 38 | - [Delegate란 무언인가 설명하고, retain 되는지 안되는지 그 이유를 함께 설명하시오.](../../issues/30) 39 | - [NotificationCenter 동작 방식과 활용 방안에 대해 설명하시오.](../../issues/31) 40 | - [UIKit 클래스들을 다룰 때 꼭 처리해야하는 애플리케이션 쓰레드 이름은 무엇인가?](../../issues/32) 41 | - [TableView를 동작 방식과 화면에 Cell을 출력하기 위해 최소한 구현해야 하는 DataSource 메서드를 설명하시오.](../../issues/33) 42 | - [하나의 View Controller 코드에서 여러 TableView Controller 역할을 해야 할 경우 어떻게 구분해서 구현해야 하는지 설명하시오.](../../issues/34) 43 | - [App Bundle의 구조와 역할에 대해 설명하시오.](../../issues/35) 44 | - [View 객체에 대해 설명하시오.](../../issues/36) 45 | - [UIView 에서 Layer 객체는 무엇이고 어떤 역할을 담당하는지 설명하시오.](../../issues/37) 46 | - [UIWindow 객체의 역할은 무엇인가?](../../issues/38) 47 | - [UINavigationController 의 역할이 무엇인지 설명하시오.](../../issues/39) 48 | - [모든 View Controller 객체의 상위 클래스는 무엇이고 그 역할은 무엇인가?](../../issues/40) 49 | - [앱이 시작할 때 main.c 에 있는 UIApplicationMain 함수에 의해서 생성되는 객체는 무엇인가?](../../issues/41) 50 | - [UIApplication 객체의 컨트롤러 역할은 어디에 구현해야 하는가?](../../issues/42) 51 | - [앱의 콘텐츠나 데이터 자체를 저장/보관하는 특별한 객체를 무엇이라고 하는가?](../../issues/43) 52 | - [앱 화면의 콘텐츠를 표시하는 로직과 관리를 담당하는 객체를 무엇이라고 하는가?](../../issues/44) 53 | - [Swift의 클로저와 Objective-C의 블록은 어떤 차이가 있는가?](../../issues/45) 54 | - [App의 Not running, Inactive, Active, Background, Suspended에 대해 설명하시오.](../../issues/46) 55 | - [App thinning에 대해서 설명하시오.](../../issues/47) 56 | - [Global DispatchQueue 의 Qos 에는 어떤 종류가 있는지, 각각 어떤 의미인지 설명하시오.](../../issues/48) 57 | 58 | ## Autolayout 59 | - [오토레이아웃을 코드로 작성하는 방법은 무엇인가? (3가지)](../../issues/49) 60 | - [hugging, resistance에 대해서 설명하시오.](../../issues/50) 61 | - [Intrinsic Size에 대해서 설명하시오.](../../issues/51) 62 | - [스토리보드를 이용했을때의 장단점을 설명하시오.](../../issues/52) 63 | - [Safearea에 대해서 설명하시오.](../../issues/53) 64 | - [Left Constraint 와 Leading Constraint 의 차이점을 설명하시오.](../../issues/54) 65 | 66 | ## ARC 67 | - [ARC란 무엇인지 설명하시오.](../../issues/55) 68 | - [Retain Count 방식에 대해 설명하시오.](../../issues/58) 69 | - [Strong 과 Weak 참조 방식에 대해 설명하시오.](../../issues/59) 70 | - [ARC 대신 Manual Reference Count 방식으로 구현할 때 꼭 사용해야 하는 메서드들을 쓰고 역할을 설명하시오.](../../issues/60) 71 | - [retain 과 assign 의 차이점을 설명하시오.](../../issues/61) 72 | - [순환 참조에 대하여 설명하시오.](../../issues/62) 73 | - [강한 순환 참조 (Strong Reference Cycle) 는 어떤 경우에 발생하는지 설명하시오.](../../issues/63) 74 | - [특정 객체를 autorelease 하기 위해 필요한 사항과 과정을 설명하시오.](../../issues/64) 75 | - [Autorelease Pool을 사용해야 하는 상황을 두 가지 이상 예로 들어 설명하시오. ](../../issues/65) 76 | - [다음 코드를 실행하면 어떤 일이 발생할까 추측해서 설명하시오. `Ball *ball = [[[[Ball alloc] init] autorelease] autorelease];`](../../issues/66) 77 | 78 | ## Functional Programming 79 | - 함수형 프로그래밍이 무엇인지 설명하시오. 80 | - 고차 함수가 무엇인지 설명하시오. 81 | - Swift Standard Library의 map, filter, reduce, compactMap, flatMap에 대하여 설명하시오. 82 | 83 | # Optional 84 | 아래부터는 추가로 공부를 하면 좋을 내용들입니다. 85 | 86 | Objective-c나 rx는 회사, 팀마다 사용하는곳이 차이가있고 신입이나 주니어기준으로 필수라고 여겨지지않기에 옵셔널에 추가하였습니다. 87 | 88 | ## Objective-C 89 | - Mutable 객체과 Immutable 객체는 어떤것이 있는지 예를 들고, 차이점을 설명하시오. 90 | - dynamic과 property 의미와 차이를 설명하시오. 91 | - @property로 선언한 NSString* title 의 getter/setter 메서드를 구현해보시오. 92 | - @property에서 atomic과 nonatomic 차이점을 설명하고, 어떤것이 안전한지, 어느것이 기본인지 설명하시오. 93 | - @property로 선언한다는 것의 의미를 설명하고, .h에 넣을 경우와 .m에 넣을 경우 차이점을 설명하시오. 94 | - -performSelector:withObject:afterDelay: 메시지를 보내면 인자값의 객체는 retain되는가? 그 이유를 함께 설명하시오. 95 | - Objective-C 에서 캡슐화된 데이터를 접근하기 위한 방법들을 설명하시오. 96 | - unnamed category 방식에 대해 설명하시오. 97 | - Category 확장과 Subclass 확장의 차이점을 설명하시오. 98 | - Category 방식에 대해 설명하시오. 99 | - Objective-C 에서 Protocol 이란 무엇인지 설명하시오. 100 | - Objective-C++ 방식이 무엇인지 설명하고, 어떤 경우 사용해야 하는지 설명하시오. 101 | - method swizzling이 무엇이고, 어떨 때 사용하는지 설명하시오. 102 | 103 | ## Advanced 104 | - NSCoder 클래스는 어떤 상황에서 어떻게 써야 하는지 설명하시오. 105 | - Responder Chain 구조에 대해 설명하고, First Responder 역할에 대해 설명하시오. 106 | - NSObject부터 UIButton 까지 상속 과정의 계층과 역할을 설명하시오. 107 | - shallow copy와 deep copy의 차이점을 설명하시오. 108 | - Push Notification 방식에 대해 설명하시오. 109 | - Foundation 과 Core Foundation 프레임워크의 차이점을 설명하시오. 110 | - NSURLConnection 에서 사용하는 Delegate 메서드들에 대해 설명하시오. 111 | - Synchronous 방식과 Asynchronous 방식으로 URL Connection을 처리할 경우의 장단점을 비교하시오. 112 | - Plist 파일 구조와 Plist 파일에 저장된 데이터를 다루기 적합한 클래스를 설명하시오. 113 | - Core Data와 Sqlite 같은 데이터 베이스의 차이점을 설명하시오. 114 | - JSON 데이터를 처리하는 방식과 파서, 객체 변환 방식에 대해 설명하시오. 115 | - XML Parser를 사용하려면 어떻게 해야 하는지 설명하시오. 116 | - 웹 서버와 HTTP 연결을 사용해서 데이터를 주거나 받으려면 사용해야 하는 클래스와 동작을 설명하시오. 117 | - DOM 방식과 SAX 방식 XML Parser의 차이점을 설명하고 iOS XML Parser는 어떤 방식인지 설명하시오. 118 | - In-App Purchase Product type 을 설명하시오. 119 | 120 | ## Architecture 121 | - 의존성 주입에 대하여 설명하시오. 122 | 123 | ## Rx 124 | - Reactive Programming이 무엇인지 설명하시오. 125 | - RxSwift에서 Hot Observable과 Cold Observable의 차이를 설명하시오. 126 | --------------------------------------------------------------------------------