(TIL) INTERVIEW
(TIL) INTERVIEW
면접카타
[Language - Javascript]
- var, let, const 에 대해 설명해주세요.
- Promise란 무엇인지 설명해주세요.
- async/await 이란 무엇인지 설명해주세요.
- Hoisting이란 무엇인지 설명해주세요.
- Arrow Function 이란 무엇인지 설명해주세요.
- Express란 무엇이고 왜 필요하며 대안은 무엇이 있는지 설명해주세요.
- 깊은 복사와 얕은 복사의 차이는 무엇이고 JS에서 각각을 구현하는 방법은 어떻게 되는지 설명해주세요.
- JWT에 대해 설명해주세요. 구체적으로 JWT를 어디서 처리하는지, 어떠한 방식으로 검증하는지, 재발급 방식과 주기는 어떻게 처리하는지, 다른 API 서비스 호출 시 어떻게 잡아서 인증 처리하는지 말씀해주세요.
- Node.js는 single-threaded 기반 JS 런타임입니다. 이에 대해 아는 만큼 설명해주세요.
- Node.js는 non-blocking, asynchronous 기반 JS 런타임입니다. 이에 대해 아는 만큼 설명해주세요.
- Node.js의 이벤트 루프란 무엇이고 왜 필요하며 어떻게 작동하는지 아는 만큼 설명해주세요.
- Node.js의 libUV 라이브러리에 대해 설명해주세요.
- 동기와 비동기의 차이, 블락킹과 논블락킹의 차이, 비동기와 논블락킹에 차이에 대해 설명해주세요.
[알고리즘]
- BigO에 대해 설명해주세요
- 다음의 정렬을 설명하고 본인이 가장 편한 언어를 사용하여 로직을 구현해주세요
- 선택 정렬(Selection Sort)
- 버블 정렬(Bubble Sort)
- 병합 정렬(Merge Sort)
- 삽입 정렬(Insertion Sort)
- 퀵 정렬(Quick Sort)
- 힙 정렬(Heap Sort)
- DFS와 BFS의 차이를 말해주세요 DFS (Depth-First Search)
[Data structure]
- Array과 LinkedList를 비교설명해주세요.
- Array는 연속된 메모리 공간에 데이터를 저장하며, 인덱스로 접근이 가능하기에 빠른 접근이 가능하다. 배열 크기는 고정이며(자바 스크립트는 제외) 선언된 후 변경 할 수 없다.
- LinkedList는 각각 노드로 나누어 저장하며, 각 노드는 값과 다음 노드의 포인터 값을 가지고 있다. 메모리상에서 연속적이지 않고 동적으로 크기를 줄이고 추가할 수 있다.
- Stack과 Queue를 비교설명해주세요. Stack과 Queue는 둘다 데이터를 순차적으로 저장하지만 처리하는 순서에 차이점이 있다.
- Stack은 LIFO(후입선출) 방식으로 마지막에 들어온 데이터가 먼저 된다.
- Queue는 FIFO(선입선출) 방식으로 먼저 들어온 데이터가 먼저 처리된다.
- 그래프(Graph)와 트리(Tree)를 설명하고, 둘의 차이점을 설명해주세요 노드들과 이를 연결하는 간선들로 구성된 자료구조
- 그래프(Graph) : 노드 간에 연결에 방향이 있을수도 있고 없을 수도 있으며 , 사이클을 허용할 수도 있다.
- 트리(Tree) : 비순환적인 그래프 (사이클X) 이며 계층적인 구조를 갖는다.
그래프는 사이클을 허용하고, 방향성과 가중치를 가질 수 있는 보다 일반적인 구조입니다. 다양한 관계를 표현하고, 여러 개의 연결 요소가 있을 수 있습니다. 트리는 사이클이 없고, 계층적이고 단방향인 구조로, 단 하나의 연결 요소를 가집니다. 트리는 부모-자식 관계로 이루어진 구체적인 데이터 구조입니다.
이진트리, 이진 검색트리, 힙이 각각 무엇인지 설명하고, 차이점을 설명해주세요 이진트리 : 각 노드의 자식 노드 수가 최대 2개인 트리를 의미한다. 이진 탐색 트리 : 왼쪽 자식 노드는 부모 노드보다 작고 오른쪽 자식 노드는 부모 노드보다 큰 값을 가진다.
- Binary Heap
- Red-Black Tree
- B+ Tree
해시테이블과 이진 검색트리를 비교하고 장단점을 이야기해주세요
- Hash
- Map
[DB]
- Primary Key, Foreign Key, ER 모델이란 무엇인가요?
- Primary Key : 데이터 테이블 레코드의 기준이 되는 필드. NULL과 중복을 허용하지 않는다.
- Foreign Key : 두 테이블의 관계를 이어주는 필드. 상위 테이블의 기준키를 참조한다.
- ER 모델: 엔티티(Entity),속성(Attribute),관계(Relationship)의 세가지 요소로 표현한 데이터 모델 이다. 개체는 테이블을 , 요소는 컬럼을 관계는 테이블간의 관계를 표기한다.
- 정규화에 대해서 말해보세요, 정규화의 목적은 무엇인가요?
- 제1정규형: 테이블의 모든 열은 하나의 원자값을 가져야 한다.(여러 값 x)
- 제2정규형: 1NF을 만족하면서, 기본키에 완전 함수적 종속이 있어야한다.
- 제3정규형: 2NF를 만족하면서 이행 함수 종속을 제거하는 정규화 과정이다. 즉 비-기본키에 종속이 발생하는 이를 제거하여 따로 관리한다.
- 목적: 목적은 중복을 최소화하고, 데이터의 무결성(integrity)을 유지하며, 데이터를 쉽게 관리하기 위해서 이다.
- 무결성에 대해 말해보시오
- 데이터베이스에서 데이터의 정확성, 일관성, 신뢰성을 유지하는 것을 의미하며 데이터베이스 설계 시 데이터가 정확하고 일관되게 유지되도록 하는 중요한 역할
- 개체 무결성 : 각 레코드는 기본키를 가져야 하며 NULL이거나 중복되지 않아야한다.
- 참조 무결성 : 외래 키가 참조하는 값은 반듯이 연결된 테이블에 존재햐아 한다.
- 도메인 무결성 : 컬럼의 값은 정의된 데이터 타입과 범위 내에 값이어야 한다.
- 사용자 정의 무결성: 사용자가 직접 정의한 규칙이나 제약 조건을 말한다.
- JOIN이 무엇인지 설명해주세요 JOIN은 데이터베이스에서 두 개 이상의 테이블을 결합하여 관련 데이터를 하나의 결과로 반환하는 SQL 명령어. 종류로는 4가지가 있다.
- inner : 두 테이블간에 공통된 값을 만족하는 결과를 포함한다.
- outer : 양쪽 테이블에서 일치하는 데이터와 일치하지 않는 데이터 모두를 반환
- left : 왼쪽 테이블의 모든 값을 출력하고 오른쪽 테이블에서는 일치하는 행이 있으면 그 행을 포함하며 없는 경우 NULL로 표시한다.
- right : 오른쪽 테이블의 모든 값을 출력하고 왼쪽 테이블에서는 일치하는 행이 있으면 그 행을 포함하며 없는 경우 NULL로 표시한다.
- NoSQL이란 무엇인가요? 기존RDBMS와 다른점도 설명해주세요
- 비관계형 데이터 베이스를 말하며, 고정된 형식 없이 데이터를 저장할 수 있다. 여러 데이터 모델을 사용한다. 그래서 확장성이나 유연성이 RDBMS보다 우위에 있지만 데이터의 안전성과 일관성이 떨어진다.
- 트랜잭션이란 무엇인가요? 데이터베이스에서 일련의 작업 단위를 의미한다. 단위 크기는 정의에 따라 달라진다.
- 트랜잭션의 성질 (ACID)
- Atomicity(원자성) : 원자성은 트랜잭션이 데이터베이스에 모두 반영되던가, 아니면 전혀 반영되지 않아야 한다는 것
- 일관성 (Consistency): 트랜잭션의 작업 처리 결과가 항상 일관성이 있어야 한다는 것.
- 독립성 (Isolation) : 어떤 하나의 트랜잭션이라도, 다른 트랜잭션의 연산에 끼어들 수 없다는 점
- 영속성 () : 트랜잭션이 성공적으로 완료되면, 그 결과는 영구적으로 저장한다.
- 트랜잭션과 Lock
- 트랜잭션이 실행되는 동안 다른 트랜잭션들이 같은 데이터에 접근하거나 수정하는 것을 제어하는 메커니즘이며 데이터의 일관성을 유지한다.
- 공유 잠금 (Shared Lock, S Lock) : 데이터를 읽을 수 있게 하지만, 수정은 불가능 하다.
- 배타적 잠금 (Exclusive Lock, X Lock) : 해당 데이터에 대해 다른 트랜잭션이 읽기나 쓰기 작업을 할 수 없도록 잠금한다
- 트랜잭션을 사용할 때 주의할 점
- 범위 최소화
- 데드락(DeadLock)
- 트랜잭션의 격리 수준
- 트랜잭션을 사용할 때 주의할 점
- 데이터 베이스 인덱스의 자료구조를 설명해주세요.
- 프로세스와 쓰레드에 대해서 설명하고 그 차이에 대해서 설명해주세요.
- 멀티프로세스와 멀티쓰레드의 특징에 대해 설명해주세요.
- 동기와 비동기의 차이 설명해주세요.
- Deadlock이란 무엇인지 설명해주세요.
- 크리티컬 섹션에 대해 설명해주세요.
- 주기억 장치와 보조 기억 장치의 특징에 대해 설명해주세요.
- 컴퓨터 구조상 캐시가 필요한 이유에 대해 설명해주세요.
[네트워크]
- tcp/udp의 차이점을 설명하세요
- tcp udp 패킷구조 차이점
- 3-way handshaking이란?
- 브라우저에 네이버홈페이지 url을 입력했을때 일어나는 과정을 설명하세요
- OSI 7계층에대해 설명하세요
- 리피터, 허브, 브릿지, 라우터에 대해 설명해주세요.
- L2, L3, L4, L7 스위치 차이점은 무엇인가요?
- RESTFul API 란 무엇인가요?
- HTTP 프로토콜에 대해 설명해주세요
- HTTP와 HTTPS의 차이는 무엇인가요?
- ssl
- HTTP method에 대해 설명해주세요
- GET과 POST의 차이는 무엇인가요?
- Session과 Cookie 차이는?
- 대칭키 / 비대칭키 암호화란 무엇인가요?
- 로드밸런싱의 개념과 로드밸런싱 알고리즘에 대해 설명해주세요.
- 프로토버프에 대해 설명해주세요.
- IP 프로토콜의 특징에 대해 설명해주세요.
- 흐름제어, 혼잡제어, 오류제어에 대해 설명해주세요.
[ETC]
- 좋은 코드란 무엇인가요?
- 객체 지향 프로그래밍이란 무엇인가요?
- 객체지향과 절차지향 차이
- 형상 관리를 잘못하면 어떤 문제가 발생하나요?
- TDD 란 무엇이며 어떠한 장점이 있나요?
- CI/CD에 대해서 설명해주세요.
- MVC 패턴이란 무엇인가요?
- HTTP와 HTTP2의 차이는 무엇인가요?
- apache와 nginx차이는 무엇인가요?
[본인의 프로젝트 관련 질문]
- 어떤 역할을 맡았고, 무슨 기술을 썼으며, 어떤 어려움이 있었고 어떻게 해결했는지
- 작성한 프로젝트의 보안은 어떻게 신경썼나요?
- 코딩테스트문제에서 뭐가 인상깊거나 아쉬웠는지 간단히
- 어떤 실패를 했고 어떻게 극복했고 어떤것을 얻었는지
- 서비스 아키텍처에 대해 설명
- 그에 대한 기술도 함께 설명
This post is licensed under CC BY 4.0 by the author.