- 질문에 의도에 맞게 대답 - 검정
- 의도와 조금 다르거나 부족함 - 노랑
- 대답을 잘 하지 못함 - 빨강
정렬
- 삽입정렬에 대해서 설명해주실 수 있나요?
- 1번 인덱스부터 탐색을 시작해서 인덱스 i, i - 1을 비교하고 교환한다.
- 시간복잡도는 평균, 최악 O(n^2), 최선 O(n) → 최선의 경우 이미 정렬되어있다면 비교하지 않기 때문에 빨라진다. -
피드백
의도적 뜸들이기
- 안정정렬, 불안정정렬
- 중복된 요소가 있을 수 있다, 정렬을 마친 뒤 중복된 요소의 순서가 유지되는지에 따라 구분한다.
- 안정정렬 → 안정정렬을 잘 모르는 상태에서 답변을 잘 해주심 (삽입 정렬을 잘 알고 있는 것 같다) -
피드백
+퀵 정렬의 단점
의도적 뜸들이기
- 병합정렬에 대해서 설명해주실 수 있나요?
- 분할정복, 나눌 수가 없을 때까지 나눈 뒤, 두 배열을 합치는 과정에서 원소를 비교한다.
- 시간복잡도는: 최선, 평균, 최악 모두 O(nlogn) -
피드백
- 왜 항상 nlogn? → 항상 반으로 쪼개고 정렬하는 과정은 선형(?)이기 때문 (조금 장황, 더 담백하고 간단하게 말씀해주셔도 괜찮았음)
- 쪼개기 log2N *N = NlogN
- 안정인가 불안정인가? → 안정정렬
의도적 뜸들이기
- 자바스크립트는 어떤 알고리즘을 사용하나요?
- 팀소트를 사용하고, 최악의 경우에도 nlogn을 보장하기 때문에...good -
피드백
팀소트 = 정렬되었을 때의 삽입정렬의 성능 + 병합정렬의 안정성
의도적 뜸들이기
- 팀소트는 어떻게 구현되었는지?
- 잘 모름 (시간날 때 한번 알아보시면 좋을 것 같아요) -
피드백
의도적 뜸들이기
브라우저 렌더링
- 주소창에 URL을 입력했을 때 어떤 일이 일어나는지?
- 해당 주소와 연결된 DNS → IP → ARP → MAC → TCP통신 → 3웨이핸드세이크 → 연결 → 요청과 응답 → TCP 종료
의도적 뜸들이기
- 브라우저 렌더링 과정을 설명해주세요
- 서버로부터 html, css, js 파일을 받아오고 파싱해서 트리를 구축한다. 자바스크립트를 실행하면서 DOM, CSSOM 트리를 변경하고 attach해서 렌더트리를 구축하고 화면에 배치하고 페인트한다.
의도적 뜸들이기
- 브라우저가 html, css 파일을 파싱할 때 어떻게 파싱하는지?
- 상향식 파서, 하향식 파서를 이용x
- 크게 2가지로 나눈다 (토큰화, 토큰을 이용해서 구축하는 과정)
- CSS같은 경우 문맥자유문법을 지켜서 상향식, 하향식이 가능
- → 사실 원한 답변은 아니었지만 잘 알고 있는 것 같은 느낌? (제가 생각한 답변은 바이트 → 문자열 → 토큰 → 노드 → 트리), 상향식-하향식 파서, 문맥자유문법 이런 단어들이 나오니까 어라? 뭐지? 더 잘 알고 있나? 다른 면접관이면 꼬리질문? 할 수도 있을듯
네이버 스마트에디터 부서 강추
→ 부서특징이 신입을 왕창뽑느다 → 살아남는 놈 키운다- AST → 마크다운 변환기능,
의도적 뜸들이기
- 리플로우, 리페인트에 대해서 설명해주세요
- CSS속성의 변경이나 자바스크립트 실행으로 트리가 변하면 새롭게 렌더트리가 구축되고 다시 레이아웃 배치 (리플로우), 그리고 다시 화면에 그리는 것을 리페인트
의도적 뜸들이기
- 브라우저별로 어떤 렌더링 엔진을 사용하는지? (상식 질문)
- 웹킷, 게코, 크로미움 (시간날 때 한번 알아보시면 좋을 것 같아요) -
피드백
- 상식이 제일 치명적일 수 있는데 먼저 대답하시고 크로미움 얘기하시면서 이 부분에 관심이 있는 사람이구나 라는 느낌
의도적 뜸들이기
전체적인 피드백
직관성 - 무슨 말을 하려는지 빠르게 이해(good), 말하려는 바를 꼬리질문을 통해 이해 (bad)
구체성 - 묻는 개념에 대해 자세하게 이야기(good), 묻는 개념의 일부만을 이야기함 (bad)
정확성 - 올바른 개념에 대해 이야기 (good), 잘못된 정보, 여러 개념을 혼합하여 이야기함 (bad)
태도 및 자세 - 말하는 속도, 강약조절, 자신감, 몸짓의 변화가 적절하다 (good)
- 전체적으로 매우 좋은 답변들이었습니다. 저(상윤)는 답변들이 굉장히 좋았는데 몇몇 질문들에 대해서는 면접관마다 호불호가 갈릴 수도 있을 것 같아요.