@ 16. 1 ~ 17. 1/면접관련
-
이진트리, 힙, 이진탐색트리 삽입삭제 정리다@ 16. 1 ~ 17. 1/면접관련 2016. 12. 4. 23:09
이진트리에서는 그냥 단순히 특정 노드 아래에 삽입을 하면되는데..삭제도 마찬가지 자식들 관리만 잘하면됨 힙에서는 삽입할때 완전 이진트리의 형식으로 마지막 위치에 삽입하고 WALKUP을 한다. 부모와 비교하면서 올라가면됨삭제역시 루트 노트를 지우고? 가장 마지막 노드를 루트에 넣고 WALKDOWN을 한다. 이진탐색트리는 삽입할때 루트에서부터 검색을 시작한다 (자신이 들어갈 위치를 검색함) 같은값이 있으면 안됨..삭제는 좀 복잡함.1) 자식 노드가 없으면 그냥 노드 삭제 부모 연결관리만 해주면됨2) 자식 1개라면 삭제하고 자식 링크릉 부모의 다음 링크로 연결(현재 삭제되는 자신의 위치)3) 자식이 2개라면 1: 왼쪽에서 가장 큰 자식 2: 오른쪽에서 가장 작은 자식 을 찾는다 보통 1번을 함그리고 그 삭제된..
-
빅오표기법이란@ 16. 1 ~ 17. 1/면접관련 2016. 12. 4. 22:16
빅오 표기법이란? 어떤 하나의 함수의 복잡도를 정의하는 데 즐겨 사용하는 것. 간단히 말하자면 알고리즘이 처리할 자료집합의 크기가 성장함에 따라 알고리즘의 효율이 어떻게 변화하는지를 대략적이나마 추정하는 하나의 함수라고 정의 할 수 있다. 알고리즘의 복잡도를 표현하는 데 흔히 쓰이는 함수들이 몇 가지 있는데, 복잡도의 낮은 것부터 높은 순으로 나열해보자면 (상수), (log₂n), (n), (nlog₂n), n², n³, 2ⁿ 이라고 한다. O(c) 빅 O 표기에서 c는 상수를 뜻한다. 상수 함수의 그래프는 항상 수평을 유지한다. 이는 알고리즘의 수행에 걸리는 시간이 자료집합의 크기에 상관없이 항상 동일하다는 뜻이다. 대체로 이런 함수들이 가장 빠른 것으로 간주된다. O(log₂n) 로그 기반의 알고리즘..
-
메모리 풀@ 16. 1 ~ 17. 1/면접관련 2016. 12. 4. 21:08
메모리 풀을 쓰는 이유 : 메모리 할당 / 해제를 요청하면 시스템 콜이 발생된다.메모리 파편화 문제를 해결하는 방법이기도 함.(근데 이건...OS가 프레임 기법 /페이징 기법을 처리해주어서..요즘은 신경안써도된다는데..) 기능은1. 미리 큰 메모리를 할당 / 해제하는 기능2. 미리 할당한 큰 메모리에서 원하는 크기 만큼 할당 / 해제하는 기능( - 여기까지 기본적인 chunk의 기능들)3. 큰 메모리가 더 필요할 수 있으므로, 이러한 큰 메모리르 관리하는 기능(복수운용) 1번 보면 미리 큰 메모리를 할당하는 방법은 큰 메모리에서 작은 메모리로 쪼개는 방법에 따라서 할당 방법이 달라진다라..고정크기냐, 원하는 크기냐인데..대부분은 고정크기로 한다 왜냐면. 복잡하지 않으니까.고정블럭단위라는 장점..하지만 사..
-
함수호출 최종정리@ 16. 1 ~ 17. 1/면접관련 2016. 12. 4. 17:47
스텍 세그먼트는 메모리..스택, 코드, 데이터, 힙 이런것..스택 프레임이란 함수가 호출 될 때마다 함수 호출을 위해 할당 받는 메모리 덩어리다. 스텍 프레임은 스택 세그먼트 안에 잡힌다. 스텍프레임을 사용해서 얻는 이점 : 복귀주소(여기서 복귀 주소는 함수 호출 직후의 주소, 즉 다음 주소를 이야기 한다) 전달이 가능해짐. (스택의 크기가 충분하다면), 함수의 인자전달, * 고정된 레지스터나 고정된 메모리 주소에 값을 쓰면 이전값이 사라지니까. 그리고 복귀 주소를 쌓아둔 메모리(스텍프레임이지..)중 가장 윗부분을 가리키는 레지스터가 SP이다. 함수내에서는 자동으로 함수가 종료되면 함수내에서 스택세그먼트의 주소를 4바이트 해제한다 그 이유는 스택 포인터 레지스터(4바이트)만큼 증가시켜둔걸 해제하기 위함이..
-
그래프 인접리스트(DFS, BFS)@ 16. 1 ~ 17. 1/면접관련 2016. 12. 4. 15:49
그래프를 인접 리스트로 구현하는 방법은 정점별 인접 정점을 연결리스트로 저장하는 방식이다.즉, 인접 리스트는 특정 노드에 연결되는 노드를 저장하는 방식을 통해 그래프를 구현한다. !! 이게 중요함..그리고 인접행렬과 틀린점은 메모리 낭비가 없다. 실제 연결된 노드만 리스트에 들어가니까..하지만 검색 시간은 더 걸린다.음..깊이우선은 현재 노드와 연결된게 우선이고..반면 넓이 우선은 현재 선택된 노드의 이전노드에서 연결된 다른노드들이 우선이다. 문제인 재귀호출 방법부터..DFS(node V)실제 처리 V v
-
렌더링 파이프라인 정리@ 16. 1 ~ 17. 1/면접관련 2016. 12. 4. 01:22
로컬변환-> 월드변환 -> 뷰변환 -> 후면추려내기 -> 조명 -> 테셀레이션 -> 클리핑 -> 투영 -> 뷰포트 -> 레스터 라이즈 ->텍스처 적용-> 렌더 백앤드 - > 출력 1. 로컬변환 : 모델하나의 고유한 좌표계 모델 좌표계라 하지..2. 월드변환 : 로컬 스페이스의 개체들을 월드좌표로 변환3. 뷰 변환 : 카메라를 좌표계의 원점으로 변환 -> 모든 개체들 변환여기서 말이다. 카메라가 원점으로 이동하고 이떄 물체도 같이 그만큼 이동하는거야. 그리고z축 양의 방향을 내려다보도록 방향을 변경하는데 이때 물체도 함께 회전을 한다. 4. 후면추려내기 : 두르기 순서의 시계 방향에 지정된 폴리곤을 전면 폴리곤으로 설정5. 조명 : 광원벡터, 시선 벡터, 법선 벡터 등 조명계산식을 이용해 정점의 색상계산6..
-
면접관련 정리@ 16. 1 ~ 17. 1/면접관련 2016. 12. 4. 01:05
빅 엔디안큰 주소부터 대입하는것리틀 엔디안작은 주소부터 대입하는것 빅 엔디안은 우리가 숫자쓰는거랑 같아.메모리 0x12345678 이라고 한다면메모리 주소 -> 0x100 0x101 0x102 0x1030x12 0x34 0x56 0x 78이런식이겠지.. 헷갈리지마 메모리의 주소에 쓰이는 메모리 값이 작냐 크냐인거야..저기 0x12345678이 크냐 작냐는거야0x12는 큰거다 대부분의 컴퓨터는 리틀 엔디언을 쓴다. 이건 인텔포멧이라 하지..거꾸로 네트워크에서는 빅 엔디언을 쓰다..헐.. 벡터란 방향과 크기만 있을뿐 위치는 없다. 벡터 내적 인라인 함수 : 변수에 직접 접근하는 것과 같은 효과를 제공하낟. 함수 호출로 인한 성능 문제를 해결...컴파일 시간 증가, 소스파일의 크기가 증가하게 된다;
-
면접대비 질문 정리@ 16. 1 ~ 17. 1/면접관련 2016. 12. 4. 00:25
절차지향과 객체지향 차이절차지향 : 순차적인처리 중요, C언어 컴퓨터의 작업 처리 방식과 유사 객체지향보다 더 빠름..객체지향 : 실제 세계를 모델링, 데이터와 절차를 하나의 덩어리로 묶어서 생각하는법.. 3대 특성으로는 캡슐화, 상속, 다형성캡슐화(데이터를 감추고 메소드로 통하는 방법), 상속(이미 작성된 클래스를 이어 받아 새로운 클래스를 생성하는것, 재활용성)다형성은(가상함수의 특성을 이용한것. 부모의 타입으로 자식의 함수를 실행) 절차지향의 특징은데이터와 함수가 분리되어 있다 (즉 독립적이다) 가상함수 테이블가상함수를 만들때 생기며 클래스의 첫 4바이트에 가상함수 테이블 주소가 추가된다. 인스턴스마다 존재하면 메모리 낭비가 심해서테이블을 클래스 정보로 두고 각각 인스턴는 포인터 값으로 가상함수 테..