최근 후배들을 대상으로 하는 면접 스터디에서 기술면접(CS면접) 보조를 하면서 질문을 몇 가지 준비해보았다.
- 프로세스/스레드 구분
34 + 5 = 41
설명해보기
/2
,>>1
비교하기
- call by value, call by reference 설명
- 이중배열 탐색시 아래 두 코드는 성능 차이가 있을까?
for (int row = 0; row < n_rows; row++) {
for (int col = 0; col < n_cols; col++) {
// access arr[row][col] ...
}
}
for (int col = 0; col < n_cols; col++) {
for (int row = 0; row < n_rows; row++) {
// access arr[row][col] ...
}
}
0.1 + 0.2 != 0.3
설명
- 큐, 스택 비교
- 트리 설명
- 힙 설명
- 해시테이블 설명
- 해시충돌, 해시함수란?
- 직접 해시함수를 하나 정의해보고 분석해보기
- 주석을 참고하여 다음 함수를 완성하라
/**
* Retrieves reverse of a string.
* @example
* reverse('abc') // 'cba'
* reverse('123') // '321'
* @param {string} str - String to reverse
* @return {string} Reverse of str
*/
function getReverse(str: string) {
// don't use loop
}
/**
* Retrieves median of an array.
* @example
* median([2, 1, 7, 3, 0]) // 2
* median([7, 0, 1, 6, -1]) // 1
* @param {number[]} arr - Array of numbers
* @return {number} Median of array
*/
function getMedian(arr: number[]) {
// define return value by yourself when the number of elements is even
}
- 위의 두 함수 모두 순수함수로 작셩하셨나요?
- 다음은 하노이의 탑 이동 과정을 출력하는 함수다. 아래 함수와 동일한 출력을 내되 재귀를 사용하지 않는 새 함수를 구현하라.
void hanoi(int n, char from, char to, char aux) {
if (n == 1) {
cout << "Move disk 1 from " << from << " to " << to << endl;
return;
}
hanoi(n - 1, from, aux, to);
cout << "Move disk " << n << " from " << from << " to " << to << endl;
hanoi(n - 1, aux, to, from);
}
- 안정 정렬이란?
- 정렬 알고리즘은 왜 다양한가?
- 특정 상황에서 어떤 정렬 알고리즘을 사용할 것인가?
n + 1 problem
설명
- 인스타, 페북같은 팔로우/팔로워 관계를 지원하도록 DB 스키마를 설계해보라. 팔로워에게 새 글 알림을 빨리 전파하고, 피드(팔로우의 새 소식을 볼 수 있는 스트림)를 빨리 로드하기 위해서 어떻게 설계해야 하는가?
- 대칭키, 비대칭키(공개키) 구분 및 사용 예시 설명
REST API
란?
HTTPS
/HTTP
설명
- 웹브라우저 주소창에
www.naver.com
를 입력하면 발생하는 일
- HTTP 요청을 보냈는데 응답이 안 오면 어떻게 되는가?
- 언제까지 응답을 기다리는가? 그것은 누가 결정하는가?