Objective-C 지식 포인트

5315 단어

iOS 기반


1. 분류와 확장은 어떤 차이가 있습니까?각각 무엇을 할 수 있습니까?분류에는 어떤 한계가 있습니까?분류된 구조체 안에는 어떤 구성원들이 있습니까?2. 아토믹의 실현 메커니즘에 대해 이야기한다.왜 절대적인 라인 안전을 보장할 수 없습니까?3. 위크에게 수식된 대상은 풀려날 때 어떤 일이 일어날까?어떻게 이루어졌습니까?사이드테이블 아세요?안에 구조를 그릴 수 있을까요?4. 관련 대상은 어떤 응용 프로그램이 있습니까? 시스템은 어떻게 관련 대상을 관리합니까?방출될 때 수동으로 바늘을 비워야 합니까?5. KVO의 밑바닥 실현은?어떻게 시스템의 기본 KVO를 취소하고 수동으로 터치합니까 (KVO에 대한 터치 설정 조건: 변경된 값이 어떤 조건에 부합될 때 KVO를 터치합니다)?6.Autoreleasepool에서 사용하는 데이터 구조는 무엇입니까?AutoreleasePoolPage 구조체에 대해 알고 계십니까?7. 대상, 유형 대상, 원류, 원류 구조체의 구성과 그들이 어떻게 관련되어 있는지 설명해 준다.왜 대상 방법은 보존된 대상 구조체가 아니라 유형 대상의 구조체에 보존됩니까?8.class_ro_t 및 classrw_t의 차이?9. iOS에서 내성하는 몇 가지 방법은?class 방법 및 objcgetClass 방법은 어떤 차이가 있습니까?10. 런타임에 클래스를 만드는 방법 objcallocateClassPair의 방법 이름 끝부분은 왜pair입니까?11. int 변수가Block 수식 여부의 차이?12. Block 외부에서 사용하는 이유weak 수식과 동시에 내부에서 사용해야 한다strong 수식?13. RunLoop의 역할은 무엇입니까?그것의 내부 작업 메커니즘은 이해합니까?(스레드와 메모리 관리를 결합하는 것이 좋다) 14.어떤 장면이 스크린 렌더링을 촉발할 수 있습니까?(아는 만큼 말한다)

iOS 실전


1. AppDelegate는 어떻게 살을 빼나요?2. 반사란 무엇인가?몇 개의 응용 장면을 들 수 있습니까?(아는 만큼 말한다) 3.GCD보다 NSOperation이 더 쉽게 구현할 수 있는 시나리오는 무엇입니까?(또는 NSOperation이 GCD보다 우수한 점, 아는 만큼 말한다) 4.App이 최적화 정책을 실행합니까?가장 좋은 것은 시작 절차와 결합하여 (main() 함수의 집행 전후를 각각 말하고 얼마를 알고 얼마를 말하는가)5.App의 흔적 없는 사고방식을 아십니까?당신은 이상적인 흔적 없는 매립점 시스템이 반드시 어떤 특징을 갖추어야 한다고 생각합니까?(아는 만큼 말하라)6.당신은 어떤 상황이 앱 붕괴를 초래할 수 있는지, 각각 어떤 방법으로 차단하고 해소할 수 있는지 아십니까?(아는 만큼 말하라) 7.당신은 어떤 상황이 앱이 끊기게 할 수 있는지, 각각 어떤 방법으로 피할 수 있는지 아십니까?(아는 만큼 말한다)

네트워크 문제


1. App 네트워크 계층에는 어떤 최적화 전략이 있습니까?2.TCP는 왜 악수를 세 번, 손을 네 번 흔드는가?3. 대칭 암호화와 비대칭 암호화의 차이?각각 어떤 알고리즘의 실현이 있습니까?4. HTTPS의 악수 절차는?왜 키의 전달은 비대칭 암호화를 사용해야 합니까?양방향 인증에 대해 아십니까?5. HTTPS는 어떻게 신분 검증과 완전성 검증을 실현합니까?6.Charles로 HTTPS 가방을 어떻게 잡아요?그중의 원리와 절차는 무엇입니까?7. 중간인 공격은 무엇입니까?어떻게 피합니까?

컴퓨터 시스템 문제


1. 번역의 과정을 아십니까?몇 단계로 나뉘나요?2. 정적 링크에 대해 알고 계십니까?정적 라이브러리와 동적 라이브러리의 차이는?3. 메모리의 몇 개의 큰 구역, 각자의 기능은 무엇입니까?4.static과const는 어떤 차이가 있습니까?5. 내연 함수를 아십니까?6. 언제 자물쇠가 사라질까요?어떻게 피합니까?7. 라인 안전에 대한 이해를 말해 보시겠어요?8. 당신이 알고 있는 라인 동기화 전략을 열거합니까?9. 몇 가지 자물쇠가 있습니까?각자의 원리?그것들 사이의 차이는 무엇입니까?가장 좋은 것은 장면을 결합해서 말하는 것이다

디자인 모드 문제


1. 하나의 예를 제외하고 관찰자의 디자인 모델을 제외하고 또 어떤 디자인 모델을 알고 있습니까?각각 소개 2.어떤 디자인 모델을 가장 좋아합니까?왜?3. iOS SDK에는 어떤 디자인 모델의 실천이 있습니까?4. 디자인 모델은 어떤 문제를 해결하기 위한 것입니까?5. 디자인 모델의 구성원 구성과 업무 메커니즘은 무엇입니까?6. 디자인 모델의 장단점은 무엇입니까?

구조 & 디자인 문제


1. MVC와 MVVM의 차이점은?MVVM과 MVP의 차이점은?2. 대상을 대상으로 하는 몇 가지 디자인 원칙에 대해 알고 있습니까?가장 좋은 것은 장면과 결합하여 말할 수 있다.3. 재구성 기술을 몇 가지 말씀해 주시겠어요?재구성은 언제 하기에 적합하다고 생각합니까?4. 프레임과 디자인 모델의 차이는 무엇이라고 생각합니까?5. 어떤 제3자 프레임의 원본 코드를 보았는지 어떻게 디자인했습니까?설계된 곳은 어디, 좋지 않은 곳은 어디, 어떻게 개선합니까?(이 문제의 다음 세 문제의 난이도는 이미 매우 높기 때문에 너무 N이 아닌 회사가 깊이 연구하지 않을 경우)

데이터 구조 & 알고리즘 문제


1. 체인 테이블과 수조의 차이는 무엇입니까?삽입과 조회의 시간 복잡도는 각각 얼마나 됩니까?2. 해시표는 어떻게 실현되었습니까?주소 충돌은 어떻게 해결합니까?3. 정렬 문제: 거품 정렬, 정렬 선택, 정렬 삽입, 빠른 정렬(2번, 3번) 그런 거 쓸 수 있어요?4. 체인 테이블 문제: 체인 테이블에 고리가 있는지 어떻게 검사합니까?어떻게 체인 테이블에서 어떤 값과 같은 모든 노드를 삭제합니까?5. 수조 문제: 질서수조에서 주어진 값과 같은 두 요소를 어떻게 찾아냅니까?어떻게 두 개의 질서정연한 수조를 합친 후에 질서를 유지합니까?6. 두 갈래 나무 문제: 두 갈래 나무를 어떻게 반전합니까?어떻게 두 갈래 나무가 완전히 같다는 것을 검증합니까?

좋아하는 거랑 싫어하는 거.


전체 면접문제의 iOS 부분이 차지하는 비중이 사실 크지 않다는 것을 알 수 있다. 왜냐하면 필자는 다음과 같이 생각하기 때문이다.
  iOS   =   + ( ) iOS  。
그 중에서 고급 개발의 부분은 우선적으로 심사하는 내용으로 면접자가 고급 개발에 필요한 기본 소양을 갖추고 있는지 검증하는 데 목적이 있다.이 부분의 지식을 파악하는 정도는 한 개발자의 연구와 디자인 능력에 직접적인 영향을 줄 수 있는데 가로와 세로를 포함한다.필자는 개인적으로 뒤의 (고급) iOS 개발 부분은 면접자들이 iOS 자체에 대한 이해 정도(API, 시스템, 개발 도구 등)만 조사한 것이라고 생각한다.
이 세트에서 개인이 가장 좋아하는 몇 가지 문제는:
1. iOS SDK에는 어떤 디자인 모델의 실천이 있습니까?2. 라인 안전에 대한 이해를 말해볼까?3. 어떤 상황이 앱 붕괴를 초래할 수 있는지 알고 어떤 방법으로 차단하고 제거할 수 있는지 아세요?4. 어떤 제3자 프레임의 원본 코드를 보았는지 어떻게 디자인했습니까?5. 재구성 기교를 몇 가지 말씀해 주시겠어요?재구성은 언제 하기에 적합하다고 생각합니까?
이 문제는 디자인 모델이라는 일반적인 지식에 대한 면접자의 이해뿐만 아니라 iOS SDK에 대한 익숙함과 사고 정도도 고찰할 수 있다.여기서 간단하게 몇 가지를 제시할 수 있다. 단례: UIApplication;관찰자 모드: KVO;클래스 클러스터: NSNumber,장식자 모드: 분류;명령 모드: NSInvocation,향원 모드: UItableviewCell(UItableview 재사용).더 많은 관심 있는 독자들은 iOS SDK에서 사용되는 디자인 모델을 많이 소개한'Objective-C 프로그래밍의 길'이라는 책을 볼 수 있다.
이 문제는 인터넷에서 몇몇 답이 틀린 것을 보았는데, 대략적인 뜻은 '같은 시간에 한 라인만 방문한다' 는 것이다.그러나 이 정의에 따르면 바꿀 수 없는 상수는 라인이 안전한 것이 아니기 때문에 이런 정의는 틀린 것이 분명하다.그래서 공부를 할 때 비판적인 사고를 갖추어야 한다. 특히 블로그를 볼 때 많은 상황들이 스스로 생각하고 자발적으로 인증하고 생각해야 한다.
앱이 붕괴되는 원인은 여러 가지가 있는데 예를 들어 어떤 대상에게 응답할 수 없는 방법을 보내고 수조가 경계를 넘으며 집합 클래스에 nil 대상을 추가하고string 접근이 경계를 넘으며 KVO가 관련 키를 불합리하게 제거하는 등(KVO로 인한 붕괴는 이 원인이 아니다) 등이 있다.붕괴는 사용자의 체험에 매우 영향을 미치기 때문에 필자는 고급 iOS 개발은 이런 붕괴를 피하는 능력을 갖추고 적어도 붕괴를 초래하기 쉬운 이런 장면을 알아야 한다고 생각한다.
우수한 소스 오픈 프레임워크의 코드를 보고 실현 사고방식과 세부 사항을 정리하면 우리가 유사한 장면에서 시스템을 설계하는 능력을 향상시키는 데 도움을 줄 수 있다.사실 이치는 매우 간단하다. 어렸을 때 작문을 배우는 방법은 무엇입니까? -본문을 외우는 거지.창작은 일종의 출력이기 때문에 좋은 단어와 좋은 문장의 축적(입력)이 없으면 자연히 수식이 풍부한 문장을 쓸 수 없다.코드를 쓰는 것도 마찬가지죠~
재구성 능력은 필자가 매우 중시하는 능력이다.사실 필자는 재구성에 관한 기교는 일찌감치 배울 수 있고 뒤에서 코드를 쓸 때 가능한 한 한 한 한 단계(기한이 허락되는 경우)까지 할 수 있다고 생각한다. 그리고 코드를 디자인하는 능력의 향상에 도움이 된다. 어떻게 해야만 낮은 결합, 높은 내집합, 확장, 수정하기 쉬운 시스템을 설계할 수 있습니까?재구성을 소개하는 전문적인 책이 있다.
위에서 필자가 고찰하는 것을 좋아하는 문제를 말했는데 다음에 필자가 고찰하는 것을 좋아하지 않는 것은 어떤 문제인지 설명한다.어떻게 온라인의 붕괴를 조회합니까?2. 발표 절차를 알고 계십니까?몇 개의 인증서의 차이점입니까?3. 지불/지도/공유를 해 본 적이 있습니까?4.dysm 파일은 무엇이며 어떤 역할을 합니까?필자가 이런 문제를 고찰하지 않는 원인은 두 가지가 있다.이런 문제는 면접자가 프로그래머로서의 기본적인 소양을 고찰할 수 없다. 왜냐하면 고찰의 내용은 iOS 자체에만 국한되기 때문이다.2. 이런 문제는 흔히'해보면 안다'는 것이고 능력을 계량화할 방법이 없다.실제 개발에서 만나면 해봤어요.만난 적도, 해본 적도 필자는 우수한 프로그래머가 처음에도 효율적으로 잘 할 수 있을 것이라고 믿는다.

좋은 웹페이지 즐겨찾기