Post

(TIL) INTERVIEW

(TIL) INTERVIEW

면접카타


[Language - Javascript]

  1. var, let, const 에 대해 설명해주세요.
  2. Promise란 무엇인지 설명해주세요.
  3. async/await 이란 무엇인지 설명해주세요.
  4. Hoisting이란 무엇인지 설명해주세요.
  5. Arrow Function 이란 무엇인지 설명해주세요.
  6. Express란 무엇이고 왜 필요하며 대안은 무엇이 있는지 설명해주세요.
  7. 깊은 복사와 얕은 복사의 차이는 무엇이고 JS에서 각각을 구현하는 방법은 어떻게 되는지 설명해주세요.
  8. JWT에 대해 설명해주세요. 구체적으로 JWT를 어디서 처리하는지, 어떠한 방식으로 검증하는지, 재발급 방식과 주기는 어떻게 처리하는지, 다른 API 서비스 호출 시 어떻게 잡아서 인증 처리하는지 말씀해주세요.
  9. Node.js는 single-threaded 기반 JS 런타임입니다. 이에 대해 아는 만큼 설명해주세요.
    • Node.js는 non-blocking, asynchronous 기반 JS 런타임입니다. 이에 대해 아는 만큼 설명해주세요.
  10. Node.js의 이벤트 루프란 무엇이고 왜 필요하며 어떻게 작동하는지 아는 만큼 설명해주세요.
  11. Node.js의 libUV 라이브러리에 대해 설명해주세요.
  12. 동기와 비동기의 차이, 블락킹과 논블락킹의 차이, 비동기와 논블락킹에 차이에 대해 설명해주세요.

[알고리즘]

  1. BigO에 대해 설명해주세요
  2. 다음의 정렬을 설명하고 본인이 가장 편한 언어를 사용하여 로직을 구현해주세요
    • 선택 정렬(Selection Sort)
    • 버블 정렬(Bubble Sort)
    • 병합 정렬(Merge Sort)
    • 삽입 정렬(Insertion Sort)
    • 퀵 정렬(Quick Sort)
    • 힙 정렬(Heap Sort)
  3. DFS와 BFS의 차이를 말해주세요 DFS (Depth-First Search)

[Data structure]

  1. Array과 LinkedList를 비교설명해주세요.
    • Array는 연속된 메모리 공간에 데이터를 저장하며, 인덱스로 접근이 가능하기에 빠른 접근이 가능하다. 배열 크기는 고정이며(자바 스크립트는 제외) 선언된 후 변경 할 수 없다.
    • LinkedList는 각각 노드로 나누어 저장하며, 각 노드는 값과 다음 노드의 포인터 값을 가지고 있다. 메모리상에서 연속적이지 않고 동적으로 크기를 줄이고 추가할 수 있다.
  2. Stack과 Queue를 비교설명해주세요. Stack과 Queue는 둘다 데이터를 순차적으로 저장하지만 처리하는 순서에 차이점이 있다.
    • Stack은 LIFO(후입선출) 방식으로 마지막에 들어온 데이터가 먼저 된다.
    • Queue는 FIFO(선입선출) 방식으로 먼저 들어온 데이터가 먼저 처리된다.
  3. 그래프(Graph)와 트리(Tree)를 설명하고, 둘의 차이점을 설명해주세요 노드들과 이를 연결하는 간선들로 구성된 자료구조
    • 그래프(Graph) : 노드 간에 연결에 방향이 있을수도 있고 없을 수도 있으며 , 사이클을 허용할 수도 있다.
    • 트리(Tree) : 비순환적인 그래프 (사이클X) 이며 계층적인 구조를 갖는다.

그래프는 사이클을 허용하고, 방향성과 가중치를 가질 수 있는 보다 일반적인 구조입니다. 다양한 관계를 표현하고, 여러 개의 연결 요소가 있을 수 있습니다. 트리는 사이클이 없고, 계층적이고 단방향인 구조로, 단 하나의 연결 요소를 가집니다. 트리는 부모-자식 관계로 이루어진 구체적인 데이터 구조입니다.

  1. 이진트리, 이진 검색트리, 힙이 각각 무엇인지 설명하고, 차이점을 설명해주세요 이진트리 : 각 노드의 자식 노드 수가 최대 2개인 트리를 의미한다. 이진 탐색 트리 : 왼쪽 자식 노드는 부모 노드보다 작고 오른쪽 자식 노드는 부모 노드보다 큰 값을 가진다.

      • Binary Heap
      • Red-Black Tree
      • B+ Tree
  2. 해시테이블과 이진 검색트리를 비교하고 장단점을 이야기해주세요

    • Hash
    • Map

[DB]

  1. Primary Key, Foreign Key, ER 모델이란 무엇인가요?
    • Primary Key : 데이터 테이블 레코드의 기준이 되는 필드. NULL과 중복을 허용하지 않는다.
    • Foreign Key : 두 테이블의 관계를 이어주는 필드. 상위 테이블의 기준키를 참조한다.
    • ER 모델: 엔티티(Entity),속성(Attribute),관계(Relationship)의 세가지 요소로 표현한 데이터 모델 이다. 개체는 테이블을 , 요소는 컬럼을 관계는 테이블간의 관계를 표기한다.
  2. 정규화에 대해서 말해보세요, 정규화의 목적은 무엇인가요?
    • 제1정규형: 테이블의 모든 열은 하나의 원자값을 가져야 한다.(여러 값 x)
    • 제2정규형: 1NF을 만족하면서, 기본키에 완전 함수적 종속이 있어야한다.
    • 제3정규형: 2NF를 만족하면서 이행 함수 종속을 제거하는 정규화 과정이다. 즉 비-기본키에 종속이 발생하는 이를 제거하여 따로 관리한다.
    • 목적: 목적은 중복을 최소화하고, 데이터의 무결성(integrity)을 유지하며, 데이터를 쉽게 관리하기 위해서 이다.
  3. 무결성에 대해 말해보시오
    • 데이터베이스에서 데이터의 정확성, 일관성, 신뢰성을 유지하는 것을 의미하며 데이터베이스 설계 시 데이터가 정확하고 일관되게 유지되도록 하는 중요한 역할
  • 개체 무결성 : 각 레코드는 기본키를 가져야 하며 NULL이거나 중복되지 않아야한다.
  • 참조 무결성 : 외래 키가 참조하는 값은 반듯이 연결된 테이블에 존재햐아 한다.
  • 도메인 무결성 : 컬럼의 값은 정의된 데이터 타입과 범위 내에 값이어야 한다.
  • 사용자 정의 무결성: 사용자가 직접 정의한 규칙이나 제약 조건을 말한다.
    1. JOIN이 무엇인지 설명해주세요 JOIN은 데이터베이스에서 두 개 이상의 테이블을 결합하여 관련 데이터를 하나의 결과로 반환하는 SQL 명령어. 종류로는 4가지가 있다.
    • inner : 두 테이블간에 공통된 값을 만족하는 결과를 포함한다.
    • outer : 양쪽 테이블에서 일치하는 데이터와 일치하지 않는 데이터 모두를 반환
    • left : 왼쪽 테이블의 모든 값을 출력하고 오른쪽 테이블에서는 일치하는 행이 있으면 그 행을 포함하며 없는 경우 NULL로 표시한다.
    • right : 오른쪽 테이블의 모든 값을 출력하고 왼쪽 테이블에서는 일치하는 행이 있으면 그 행을 포함하며 없는 경우 NULL로 표시한다.
  1. NoSQL이란 무엇인가요? 기존RDBMS와 다른점도 설명해주세요
    • 비관계형 데이터 베이스를 말하며, 고정된 형식 없이 데이터를 저장할 수 있다. 여러 데이터 모델을 사용한다. 그래서 확장성이나 유연성이 RDBMS보다 우위에 있지만 데이터의 안전성과 일관성이 떨어진다.
  2. 트랜잭션이란 무엇인가요? 데이터베이스에서 일련의 작업 단위를 의미한다. 단위 크기는 정의에 따라 달라진다.
      • 트랜잭션의 성질 (ACID)
      • Atomicity(원자성) : 원자성은 트랜잭션이 데이터베이스에 모두 반영되던가, 아니면 전혀 반영되지 않아야 한다는 것
      • 일관성 (Consistency): 트랜잭션의 작업 처리 결과가 항상 일관성이 있어야 한다는 것.
      • 독립성 (Isolation) : 어떤 하나의 트랜잭션이라도, 다른 트랜잭션의 연산에 끼어들 수 없다는 점
      • 영속성 () : 트랜잭션이 성공적으로 완료되면, 그 결과는 영구적으로 저장한다.
      • 트랜잭션과 Lock
      • 트랜잭션이 실행되는 동안 다른 트랜잭션들이 같은 데이터에 접근하거나 수정하는 것을 제어하는 메커니즘이며 데이터의 일관성을 유지한다.
      • 공유 잠금 (Shared Lock, S Lock) : 데이터를 읽을 수 있게 하지만, 수정은 불가능 하다.
      • 배타적 잠금 (Exclusive Lock, X Lock) : 해당 데이터에 대해 다른 트랜잭션이 읽기나 쓰기 작업을 할 수 없도록 잠금한다
      • 트랜잭션을 사용할 때 주의할 점
        1. 범위 최소화
        2. 데드락(DeadLock)
        3. 트랜잭션의 격리 수준
  3. 데이터 베이스 인덱스의 자료구조를 설명해주세요.
    • 검색 성능을 향상시키기 위해 사용되는 자료구조이다. B-Tree와 B+ Tree는 대부분의 관계형 데이터베이스에서 기본적으로 사용되며, Hash Index와 Bitmap Index는 특정 상황에서 유용하게 사용됩니다.

      [OS]

  4. 프로세스와 쓰레드에 대해서 설명하고 그 차이에 대해서 설명해주세요.
  5. 멀티프로세스와 멀티쓰레드의 특징에 대해 설명해주세요.
  6. 동기와 비동기의 차이 설명해주세요.
  7. Deadlock이란 무엇인지 설명해주세요.
  8. 크리티컬 섹션에 대해 설명해주세요.
  9. 주기억 장치와 보조 기억 장치의 특징에 대해 설명해주세요.
  10. 컴퓨터 구조상 캐시가 필요한 이유에 대해 설명해주세요.

[네트워크]

  1. tcp/udp의 차이점을 설명하세요
    • tcp udp 패킷구조 차이점
    • 3-way handshaking이란?
  2. 브라우저에 네이버홈페이지 url을 입력했을때 일어나는 과정을 설명하세요
  3. OSI 7계층에대해 설명하세요
      • 리피터, 허브, 브릿지, 라우터에 대해 설명해주세요.
      • L2, L3, L4, L7 스위치 차이점은 무엇인가요?
  4. RESTFul API 란 무엇인가요?
  5. HTTP 프로토콜에 대해 설명해주세요
  6. HTTP와 HTTPS의 차이는 무엇인가요?
    • ssl
  7. HTTP method에 대해 설명해주세요
    • GET과 POST의 차이는 무엇인가요?
  8. Session과 Cookie 차이는?
  9. 대칭키 / 비대칭키 암호화란 무엇인가요?
  10. 로드밸런싱의 개념과 로드밸런싱 알고리즘에 대해 설명해주세요.
  11. 프로토버프에 대해 설명해주세요.
  12. IP 프로토콜의 특징에 대해 설명해주세요.
  13. 흐름제어, 혼잡제어, 오류제어에 대해 설명해주세요.

[ETC]

  1. 좋은 코드란 무엇인가요?
  2. 객체 지향 프로그래밍이란 무엇인가요?
    • 객체지향과 절차지향 차이
  3. 형상 관리를 잘못하면 어떤 문제가 발생하나요?
  4. TDD 란 무엇이며 어떠한 장점이 있나요?
  5. CI/CD에 대해서 설명해주세요.
  6. MVC 패턴이란 무엇인가요?
  7. HTTP와 HTTP2의 차이는 무엇인가요?
  8. apache와 nginx차이는 무엇인가요?

[본인의 프로젝트 관련 질문]

  1. 어떤 역할을 맡았고, 무슨 기술을 썼으며, 어떤 어려움이 있었고 어떻게 해결했는지
  2. 작성한 프로젝트의 보안은 어떻게 신경썼나요?
  3. 코딩테스트문제에서 뭐가 인상깊거나 아쉬웠는지 간단히
  4. 어떤 실패를 했고 어떻게 극복했고 어떤것을 얻었는지
  5. 서비스 아키텍처에 대해 설명
    • 그에 대한 기술도 함께 설명
This post is licensed under CC BY 4.0 by the author.