1. strcut와 class 차이점
2. 구조체 padding bit
3. 함수 오버로딩/ 오버라이딩
4. db트랜젝션
5. 스케쥴링
6. 재귀와 반복문 차이
7. hash와 tree차이, 쓰이는 곳
8. 코드가 실행 가능한 파일이 되기까지의 과정
9. thread와 process차이, 장단점
10. macro와 inline함수 각각 쓰이는 곳
+ c++의 특성 중 가장 중요하다 생각하는 것
+ SQ LITE 어떤 것인지
1. struct와 class 차이점
- 기본 지시자가 struct는 public / class는 private
- class에서 변수값 바꾸려면 set함수 정의해주고 함수 통해서 변경 가능
- 공통점 : c++에서는 동작 방식 일치, 멤버 함수/생성자/소멸자/상속 모두 가능
- c의 struct는 멤버 변수만 넣을 수 있음
2. 구조체 padding bit
- 메모리를 읽을 때 접근하기 쉽게 하기 위한 목적
- 32비트 CPU는 4 바이트/ 64비트는 8바이트씩 읽음
- 32비트 일 때, char, int, char 순으로 정의했을 때 구조체 크기 : 12 = (1+패딩3) + (4) + (1+패딩3)
- 32비트 일 때,char char int 순으로 정의했을 때 구조체 크기 : 8 = (1+1+패딩 2) + (4)
3. 함수 오버로딩/오버라이딩
- 오버로딩 : 같은 이름의 함수를 파라미터를 다 다르게 정의해서 사용할 때 파라미터 값으로 구분하여 함수 호출
- 오버라이딩 : 상속 관계의 상위 클래스의 함수를 이름과 인자 모두 같게 하여 재정의하는 것
4. DB 트랜잭션
- 하나의 작업을 수행하기 위한 데이터베이스 연산들을 모아놓은 데이터베이스 에서의 논리적인 작업 단위
- 즉 작업 수행에 필요한 여러 SQL문을 모아놓은 것
- commit : 트랜잭션 수행
- rollback : 수행 중 일부 명령어가 수행 안될 때 모든 명령어 취소
- 원자성 : 트랜잭션은 모두 반영되거나 모두 안 되거나 해야 함
- 일관성 : 트랜잭션 수행 후 모두 일관성 있는 데이터베이스 상태여야 함
- 독립성 : 동시에 두 개의 트랜잭션 수행 중 다른 트랜잭션이 끼어들 수 없음. 수행 완료 전에 참조할 수 없음
- 영속성 : 한번 반영된 결과는 영구적으로 반영되어야 함
5. 스케줄링
- CPU가 각각 프로세스에게 시간 할당해주는 것
- 비선점 스케줄링 : 하나의 프로세스 수행 완료 전에는 다른 프로세스가 선점할 수 없음
- FCFS(선입선출) / SJF(대기 프로세스 중 가장 짧은 것 선택) / HRN(대기 프로세스 중 응답비율이 가장 큰 것)
* 응답비율 : (대기시간+예상 실행시간)/예상 실행시간
- 선점 스케줄링 : 하나의 프로세스가 완료되지 않아도 다른 프로세스가 뺏을 수 있음
- SRT(프로세스 수행 중에 더 짧은 프로세스가 생기면 짧은 프로세스 배치) / RR(큐에 도착 한순, 정해진 시간만큼 할당)
- 다단계 피드백 큐 : 여러 개의 큐에 각각 필요한 알고리즘 적용, 위에 있는 큐가 우선순위가 높음, 할당된 시간 내에 수행 못하면 낮은 우선순위의 큐로 들어감)
6. 재귀와 반복문 차이
- 재귀 : 자기 자신을 호출
- 반복문 : 조건을 달성하는 동안 계속 반복해서 진행
- 재귀는 함수를 호출하므로 스택에 쌓임. 스택오버플로우 발생 가능, 반복문보다 상대적으로 느릴 수 있음
7. hash와 tree 차이
- hash : 시간 복잡도가 O(1), 키가 정렬되어 있지 않음
- tree : 시간복잡도가 O(logN), 정렬된 키가 필요할 때 유용
8. 코드가 실행 가능한 파일이 되기 위한 과정
- 소스파일 -> 전처리 -> 컴파일 -> 어셈블 -> 링크 -> 실행파일
- 전처리 : 전처리기가 #include 에있는 헤더 파일을 소스코드에 붙인 뒤에 #define으로 작성된 부분에 매크로 치환 작업 수행
- 컴파일 : 컴파일러가 소스코드를 어셈블리어로 변환
- 어셈블 : 어셈블러가 어셈블리어를 기계어로 변환 -> 오브젝트 파일 생김
- 링크 : 링커가 오브젝트 파일들과 라이브러리를 링킹 해서 실행파일로 만듦
- 동적 링킹 : 실행할 때 프로그램 외부에 존재하는 소스파일(dll)과 연결 / 메모리 차지 적음 / 약간의 오버헤드
* dll은 실행 시에 같이 로딩되고 프로그램 종료 시 메모리에서 해제됨
- 정적 링킹 : 컴파일된 소스파일(. lib)을 연걸 / 이미 컴파일되어 시간 단축 /메모리 차지 큼
- 빌드 : 컴파일 + 링크
9. 스레드(Thread)와 프로세스(Process) 차이
- 스레드는 하나의 프로세스가 여러 작업을 동시에 할 때 각각의 작업을 스레드라고 함.
- 프로세스는 컴퓨터에서 실행되고 있는 프로그램
- 프로세스는 메모리 영역(code, data, stack, heap)을 할당 받음
- 스레드는 프로세스의 stack만 따로 할당받고 code, data, heap영역은 공유함
10. macro와 inline함수 각각 쓰이는 곳
- macro : #define, 전 처리과정에서 치환됨, 자료형 의존 x
- inlie : 컴파일 러시 치환되어 사용됨, 자료형 o
+ c++의 특성 중 가장 중요한 것
- 클래스
- 상속
- 추상화
- 캡슐화
+ sq lite : 응용프로그램에 넣어 사용하는 가벼운 DBMS, 모바일 환경에 적합함
'~ 2019 유물' 카테고리의 다른 글
할일 (0) | 2019.12.07 |
---|---|
기술 면접 답변(31~40) (0) | 2019.11.12 |
기술 면접 답변(21~30) (0) | 2019.11.06 |
기술 면접 답변(11~20) (0) | 2019.11.04 |
기술 면접 질문 모음 (0) | 2019.10.30 |