현재 위치 - 회사기업대전 - 중국 기업 정보 - iOS 개발 인터뷰에서 제안을 받기 위한 주요 가이드: 추가 보안 암호화가 포함된 데이터 구조 및 알고리즘

iOS 개발 인터뷰에서 제안을 받기 위한 주요 가이드: 추가 보안 암호화가 포함된 데이터 구조 및 알고리즘

집합 구조 선형 구조 트리 구조 그래픽 구조

1.1 직설적으로 말하면 집합 구조는 집합, 즉 원 안에 많은 요소가 있고, 요소들 사이에 관계가 없습니다. 이것은 매우 간단합니다.

1.2 직설적으로 말하면 선형 구조는 많은 사람들이 줄을 서 있다는 것을 의미합니다. 이 선은 직선일 필요는 없습니다. 곡선으로 만들 수도 있습니다. 또한 여러 세그먼트로 나누어진 선과 동일한 값일 수도 있습니다(상상해 보세요). 선형 구조는 일대일 관계입니다.

1.3 트리 구조 솔직히 말해서 개발자는 XML 구문 분석에 대해 어느 정도 알아야 합니다. 트리 구조는 그것과 매우 유사합니다. 피라미드라고도 상상할 수 있습니다. 트리 구조는 일대다 관계입니다.

1.4 그래픽 구조는 더 복잡합니다. 그분은 무한하십니다. 경계가 없고 방향이 없는(방향이 없는) 그래프 구조를 우리와 유사한 다대다 교차 관계로 이해할 수 있습니다.

데이터 구조의 저장

일반적으로 사용되는 두 가지 저장 방법이 있습니다. 데이터 구조의 경우 순차 저장 구조와 체인형 저장 구조

2.1 순차 저장 구조

상상력을 발휘하세요. 예를 들어보세요. 정렬. 1-2-3-4-5-6-7-8-9-10. 이것은 순차적 저장 구조입니다. 스택은 모든 개발자에게 친숙합니다. 스택은 선입선출, 후입선출, 선입선출의 형태이죠?

이렇게 이해하면 스택 맨 아래부터 맨 위까지의 hello world 논리가 h-e-l-o-w-o-r-l-d입니다. 또 다른 예는 대기열입니다. , first out, right, 처음부터 끝까지 꼬리 h-e-l-o-w-o-r-l-d는 이렇게 배열됩니다.

2.2 체인 저장 구조

다시 상상해 보세요. 이것은 좀 더 복잡합니다. 이 사진을 마무리하면서 아티스트에게 다시 물어보고 붙여넣겠습니다. 예를 들어 여전히 1-2-3-4-5-6-7-8-9-10 배열이지만 체인입니다. 저장공간이 다릅니다 1(주소)-2(주소)-7(주소)-4(주소)- 5(주소)-9(주소)-8(주소)-3(주소)-6(주소)-10( 주소). 각 숫자 뒤에는 주소가 오고, 저장 형식이 더 이상 순서가 맞지 않습니다. 이는 순서가 어긋난다는 의미입니다. 1(주소) 1 다음의 주소는 2를 가리키고, 2 뒤의 주소는 3을 가리킵니다. 3 이후의 주소가 누구를 가리키는지 알아야 합니다. 실행하면 1(주소)-2(주소)-3(주소)-4(주소)-5(주소)-6(주소)-7(주소)-8(주소)-9(주소)이다. )-10(주소)이지만 저장 시에는 완전히 무작위입니다. 이해했다?

단방향 연결 리스트\양방향 연결 리스트\순환 연결 리스트

다시 예를 들어보겠습니다. 이해가 가장 중요합니다. 기계적으로 암기하지 마십시오. 정의. 논리.

이해가 가장 중요합니다

3.1 단방향 연결 목록

A->B->C->D->E->F->G->H입니다. 단방향 연결 목록입니다. 방향 연결 목록 H는 머리 A이고 꼬리는 머리가 하나뿐인 기차와 같으며 머리 하나만 끌 수 있습니다.

3.2 이중 연결 목록

배열과 연결 목록의 차이점:

배열: 배열 요소는 메모리에 지속적으로 저장되며 아래 첨자로 요소를 찾을 수 있습니다. 삽입 및 삭제에는 많은 수의 요소를 이동해야 합니다. 요소가 거의 변경되지 않는 상황에 적합

연결 목록: 연결 목록의 요소는 메모리에 저장됩니다. 순차적으로 저장되지 않으며 삽입 및 삭제에는 요소 포인터를 다시 할당하면 됩니다. 매우 효율적입니다.

3.3 순환 연결 목록

순환 연결 목록은 단방향 연결 목록과 동일하며 체인 저장 구조이지만 차이점은 마지막 노드의 포인터입니다. 순환 연결 리스트는 순환 연결 리스트의 첫 번째 노드 또는 헤더 노드를 가리키므로 순환 체인을 형성합니다. 상상력을 발휘하여 A->B->C->D->E->F->G->H->A 원을 만드세요. 마치 뱀이 스스로 먹는 것과 같습니다. 이론적인 지식을 외울 필요는 없습니다.

이진 트리/균형 이진 트리

4.1 이진 트리란 무엇입니까

트리 구조에서는 두 개의 노드를 이진 트리라고 합니다. 노드 분할이 없습니다. 2보다 큼. 왼쪽 하위 트리와 오른쪽 하위 트리의 순서는 바뀔 수 없기 때문에 혼란스럽습니다. 이게 도대체 무엇인지, 왼쪽 하위 트리와 오른쪽 하위 트리가 도대체 ​​무엇인지 고민하고 계실 텐데요. 이제 중국어로 다시 말씀드리자면, 이진 트리를 사람으로 생각하면 사람의 머리가 나무의 루트, 왼쪽 하위 트리가 왼손, 오른쪽 하위 트리가 오른손, 그리고 당신은 왼손도 오른손도 가질 수 없습니다. (장애, 절대 그렇지 않다고 말씀드립니다. 장애인 친구를 차별한다고 비난하지 마세요. 비난하지 마세요. 예를 들어주세요. 정말 죄송합니다.) 왼손과 오른손은 뒤집을 수 없습니다. 이렇게 이해해야 합니다

이진 트리에는 다섯 가지 형태의 표현이 있습니다

1. (노드가 없는) 빈 트리는 왜 공기와 같지 않은지 이해할 수 있습니다

2. 루트 노드만. (사람이 머리가 하나 뿐이고 다른 것이 없다는 것을 이해하는 것은 조금 무섭습니다.)

3. 왼쪽 하위 트리만 있습니다. (머리가 하나이고 왼손이 하나이기 때문에 쓰기가 점점 더 어려워집니다)

4. 오른쪽 하위 트리만

5. 왼쪽 및 오른쪽 하위 트리 모두

이진 트리는 포리스트 트리 또는 이진 트리로 변환될 수 있습니다. 여기서는 소개하지 않겠습니다. 프로젝트를 할 때 데이터 구조를 사용할 필요는 없습니다.

이해에만 집중하고, 암기하지 말고, 암기는 소용이 없습니다

1. 두 가지 방법을 사용하여 중간 변수 없이 A와 B의 값을 교환합니다

2. * ***최대 공약수 찾기

3. 스택 작업 시뮬레이션

스택은 선입, 최후 아웃이라는 특성을 가진 데이터 구조입니다.

연습 : 전역 변수를 사용하여 스택 작업 시뮬레이션

p>

#include

#include

#include

//보호 전역 변수: 전역 변수 앞에 static을 추가한 후 이 전역 변수는 이 파일에서만 사용할 수 있습니다. static int data[1024];//스택에 저장 가능 to 1024 data

static int count = 0 ;//지금까지 배치된 숫자 수(스택의 최상위 위치에 해당)

4. 정렬 알고리즘

선택 정렬, 버블 정렬, 삽입 정렬의 세 가지 정렬 알고리즘을 요약하면 다음과 같습니다.

둘 다 배열을 정렬된 부분과 정렬되지 않은 부분으로 나눕니다.

1. 선택 정렬은 정렬된 부분을 왼쪽 끝에 정의한 다음, 정렬되지 않은 부분의 가장 작은 요소를 선택하여 정렬되지 않은 부분의 첫 번째 요소와 교환합니다.

2. 버블 정렬은 정렬된 부분을 오른쪽 끝에 정의하고, 정렬되지 않은 부분을 순회하는 과정에서 교환을 수행하며, 가장 큰 요소를 가장 오른쪽 끝으로 교환합니다.

3. 삽입 정렬은 정렬된 부분을 왼쪽 끝에 정의하고, 정렬되지 않은 부분 요소의 첫 번째 요소를 정렬된 부분의 적절한 위치에 삽입합니다.

4.1.선택 정렬

선택 정렬: 최대값은 시작 끝에 나타납니다.

통과 1: n개의 숫자 중 가장 작은(큰) 숫자를 찾고 첫 번째 숫자의 위치가 바뀐다

두 번째 단계: 나머지 n-1 숫자 중에서 가장 작은(큰) 숫자를 찾아 두 번째 숫자와 위치를 바꿉니다.

이 작업을 반복합니다. ..세 번째 및 네 번째... 숫자와 위치를 차례로 교환합니다.

n-1번째 패스는 마침내 데이터의 오름차순(내림차순)을 달성할 수 있습니다.

4.2. 버블 정렬

버블 정렬: 한 번 비교한 후 끝에 최대값이 나타납니다.

첫 번째 단계: 비교 연속적으로 인접한 두 숫자, 계속해서 교환하고(소수점 앞에 큰 숫자 넣기) 하나씩 진행하여 최종적으로 n번째 요소 위치에 최대값이 나타납니다.

패스 2: 인접한 숫자를 비교합니다. 순차적으로 두 숫자가 계속해서 바뀌고(소수점은 큰 숫자 앞에 위치함) 최종적으로 n-1번째 요소 위치에 최대값이 나타남

……

통과 n-1: 인접한 두 숫자를 순서대로 비교하고 계속 교환하여(소수점은 큰 숫자 앞에 위치함) 최종적으로 두 번째 요소 위치에 최대값이 나타남

5. 절반 검색(이진 검색) )

절반 검색: 검색 시간 최적화(모든 데이터를 탐색할 필요 없음) 절반 검색 원리:

1. 배열은 순서가 지정되어야 합니다.

2. 최소값과 최대값을 알아야 합니다(범위를 알아야 합니다)

// 순서가 지정된 배열과 키가 주어지면 배열에서 키에 해당하는 인덱스 위치를 찾아야 합니다.

문자열 반전

"hello,world" 문자열이 주어지면 이를 반전시킵니다. 출력 결과: dlrow, olleh

순서 배열 조합

순서 배열 {1,4,6,7,9} 및 {2,3,5,6,8, 9,10,11,12}는 {1,2,3,4,5,6,6,7,8,9,9,10,11,12}로 병합되었습니다.

HASH 알고리즘

p> p>

해시 테이블

예: 주어진 값은 문자 a이고 해당 ASCII 코드 값은 97이며 배열 인덱스 첨자는 97입니다.

여기의 ASCII 코드는 저장과 검색 모두 이 기능을 사용하므로 검색 효율성이 효과적으로 향상됩니다.

문자열에서 한 번만 나타나는 첫 번째 문자를 찾습니다. 예를 들어 "abaccdeff"가 입력되면 출력되는 'b' 문자(char)는 길이가 8인 데이터 타입이므로 총 256가지 가능성이 있다. 각 문자는 ASCII 코드 값을 기반으로 배열의 숫자에 해당하는 배열 첨자로 사용됩니다. 배열은 각 문자의 발생 횟수를 저장합니다.

두 하위 뷰의 동일한 상위 뷰 찾기

아이디어: 두 하위 뷰의 모든 상위 뷰를 기록하고 배열에 저장한 다음 첫 번째 뷰가 나올 때까지 역순으로 검색합니다. 다른 상위 뷰가 발견되었습니다.

순서가 지정되지 않은 배열에서 중앙값 찾기

중앙값: 배열의 숫자 n이 홀수일 때 중간값인 (n + 1)/2입니다. 숫자; n이 짝수인 경우 두 중간 숫자의 평균인 (n/2 + (n/2 + 1))/2입니다.

우선 몇 가지 정렬 알고리즘을 이해해야 합니다: iOS 정렬 알고리즘

아이디어:

1. 정렬 알고리즘 + 중앙값

먼저 버블 정렬, 퀵 정렬, 힙 정렬, 힐 정렬 등의 정렬 알고리즘을 사용하여 주어진 배열을 정렬한 후 중앙값을 꺼냅니다.

2. 퀵 정렬이라는 개념을 활용하세요

1. SSL 암호화 과정에서 어떤 암호화 방식을 사용하고, 왜 이렇게 하는지 간략하게 설명해주세요.

SSL 암호화 프로세스는 이전에 설명되었으므로 여기서는 반복하지 않습니다.

SSL 암호화는 실제로 그 과정에서 대칭 암호화와 비대칭 암호화의 조합을 사용합니다.

주요 고려 사항은 비대칭 암호화를 사용하여 먼저 연결하는 것입니다. 이는 중간자 공격과 키 하이재킹을 방지하기 위한 것이지만 비대칭 암호화의 효율성은 상대적으로 낮습니다. 따라서 보안 연결이 설정되면 경량 대칭 암호화를 사용할 수 있습니다.

2. RSA 비대칭 암호화

대칭 암호화 [알고리즘]은 암호화와 복호화에 동일한 비밀 키를 사용하는 반면, [비대칭 암호화 알고리즘]은 암호화 및 복호화에 두 개의 [키] 키]가 필요합니다. 이 두 키는 [공개 키](공개 키, 공개 키라고 함)와 개인 키(개인 키, 개인 키라고 함)입니다.

RSA 암호화

대칭 암호화 [알고리즘]과 달리 [비대칭 암호화 알고리즘]에는 [공개 키](공개 키)와 개인 키(개인 키)라는 두 개의 [키]가 필요합니다. 공개 키와 개인 키는 한 쌍입니다. 공개 키를 사용하여 데이터를 암호화하면 해당 개인 키만 사용하여 데이터를 암호화할 수 있고, 개인 키를 사용하여 데이터를 암호화하면 해당 공개 키만 사용할 수 있습니다. 해독하는 데 사용할 수 있습니다. 암호화와 복호화는 서로 다른 두 개의 [키]를 사용하므로 이 알고리즘을 [비대칭 암호화 알고리즘]이라고 합니다.

RSA**** 암호화 원칙

RSA는 일반적으로 사용되는 암호화 모드이며, RSA의 암호화 원칙은 다음 예를 통해 간략하게 설명할 수 있습니다.

소수 두 개를 무작위로 선택

위 내용은 이 글을 정리한 내용입니다. 시청해주셔서 감사합니다!

copyright 2024회사기업대전