백엔드 면접 질문

uuuu.jini·2022년 6월 5일
3

참고: 백엔드면접질문정리

면접 보고 멘탈 터져서 소잃고 외양간 고치는 백엔드 면접 질문 정리입니다! :)
질문리스트 - 해당 사이트 참고하여 질문리스트 확인하였고 생각하고 검색한 답안 작성을 목표로 합니다.

CS 관련 지식


네트워크

  • TCP와 UDP의 차이점 : TCP는 연결형 서비스로 가상회선 방식을 제공하고 높은 신뢰성을 보장하고 흐름제어 및 혼잡 제어 기능을 제공합니다. UDP는 비연결형 서비스로 데이터그램 방식을 제공하고 속도가 TCP에 빠릅니다.

    TCP는 연결형 서비스로 가상회선방식을 제공하고 높은 신뢰성을 보장합니다. UPD는 비연결형 서비스로 데이터그램 방식을 제공하고 속도가 빠릅니다.

  • TCP 3,4 way handshake에 대해 설명 : TCP 3 way handshake 는 TCP 통신을 이용하여 데이터를 전송하기 위한 네트워크 연결을 설정하는 과정입니다. 즉, 양쪽 모두 데이터를 전송할 준비가 되었다는 것을 보장하고, 실제로 데이터를 전송하기 전에 한 쪽이 다른 쪽이 준비되었다는 것을 알 수 있도록 한다. TCP 4 way handshake 는 TCP의 연결을 해제하는 과정입니다.

    3 way handshake는 TCP 통신을 이용하여 데이터 전송을 위한 네트워크를 연결하는 과정입니다. 4 way handshake는 연결을 해제하는 과정입니다.

  • HTTP와 HTTPs의 차이점 : HTTP는 서버/클라이언트 모델을 따라 데이터를 주고받기 위한 프로토콜 입니다. 즉, 하이퍼텍스트를 교환하기 위한 통신규약입니다. HTTPs란 HTTP에 데이터 암호화가 추가된 프로토콜입니다.

    HTTP는 하이퍼텍스트 데이터를 주고받기 위한 프로토콜이며 HTTPs는 이 HTTP에 데이터 암호화가 추가된 프로토콜 입니다.

  • HTTPS에 대해 설명하고 SSL handshake에 대해서 설명하시오. : HTTPs는 HTTP에 데이터 암호화가 추가된 프로토콜이며 SSL(Secure Socket Layer) handshake는 송신자와 수신자가 암호화된 데이터를 교환하기 위한 일련의 협상과정을 말합니다. ( 데이터를 암호화할 대칭키를 타인에게 노출시키지 않고 Client가 Server에게 전송하기 위한 협상을 벌이는 것입니다. )

Https 는 Http프로토콜에 데이터 암호화를 추가한 프로토콜이며, SSL handshake는 송신자와 수신자가 암호화된 데이터를 교환하기 위한 일련의 협상과정!

  • Get 과 Post 방식의 차이점 : Get은 클라이언트가 서버로 어떤 데이터를 조회하기 위한 요청을 위한 메소드이며, Post는 서버로 데이터를 생성하기 위해 데이터를 보낼때 사용하는 메서드입니다.
    • 사용목적 : Get은 데이터의 조회, Post 는 데이터의 생성의 목적으로 사용된다.
    • 요청에 body 유무 : Get은 URL 파라미터에 데이터를 담아보내므로 body가 없고 Post는 body에 데이터를 실어 보낸다.
    • 멱등성 : Get은 멱등하고 Post는 멱등하지 않다.
      ( 멱등 : 연산을 여러번 적용해도 결과가 달라지지 않는 성질 )

Get은 데이터의 조회를 위한 요청시 사용하는 메소드이며 멱등하고, URL에 데이터를 실어보내므로 body가 없습니다. Post는 데이터의 생성 위해 사용하는 메서드로 body에 데이터를 실어보내고 멱등하지 않습니다.

  • HTTP 메서드와 이것이 하는 역할 : Get 요청은 데이터의 조회를 위해 사용하는 메서드이며(R) , Post 요청은 데이터의 생성을 위한 메서드입니다.(C) PUT 요청은 데이터의 수정을 위한 메서드이며(U), DELETE 요청은 데이터의 삭제를 요청하는 메서드입니다.(D)

  • RESTful 이란 무엇이며 설명 : REST의 원리를 잘 지키는 시스템을 RESTfult하다고 하며 즉,HTTP URI 를 통해 데이터를 표시하고 HTTP method를 통해 자원에 대한 처리를 하는 것을 말합니다.

  • CORS란 무엇이며 이것에 대해 설명 : 서로 다른 도메인간에 자원을 공유하는 것을 뜻합니다. 대부분의 브라우저에서는 이를 차단하며, 서버측에서 헤더를 통해서 사용가능한 자원을 알려줍니다.

  • OSI 7계층이란 무엇이고 존재이유 , TCP/IP 4계층 ? : OSI 7계층은 네트워크에서 통신이 일어나는 과정을 7단계로 나눈것을 말하며 계층을 나눈 이유는 단계별로 통신이 일어나는 과정을 파악할 수 있기 때문입니다. 실제로 우리가 대부분 사용하는 네트워크는 TCP/IP 4계층으로 통신에 실제로 이용되는 계층입니다.

  • 웹서버 소프트웨어는 OSI 7계층 중 어디서 작동? : 웹 서버는 HTTP 프로토콜을 사용하여 html 데이터를 클라이언트에 제공하는 서버입니다. 웹서버 중의 하나로 어플리케이션 계층에서 작동합니다.

운영체제


  • 프로세스와 스레드의 차이 : 프로세스는 실행중인 프로그램을 의미하며, 스레드는 실행 제어만 분리한 것을 의미합니다. 프로세스는 운영체제로 부터 자원을 할당받지만 스레드는 프로세스로부터 자원을 할당받습니다. 프로세스의 코드/데이터등의 영역을 공유하기 때문에 좀 더 효율적으로 통신을 할 수 있습니다.

  • 컨텍스트 스위칭 : 여러개의 프로세스가 실행되고 있을 때 기존에 실행되던 프로세스를 중단하고 다른 프로세스를 실행시키는 것으로 즉 , CPU의 실행중이던 프로세스를 교체하는 기술입니다.

  • 동기와 비동기의 차이 : 동기는 요청을 보낸 후 응답을 받아야지만 다음 동작이 이루어지는 방식이며 비동기는 요청을 보낸 후 응답과는 상관없이 다음 동작이 이루어지는 방식입니다.

  • 멀티스레드 프로그래밍 : 하나의 프로세스를 여러개의 쓰레드로 만들어서 자원의 생성과 관리의 중복을 최소화하는 것을 멀티스레드 프로그래밍이라고 합니다.

  • Thread-safe 하다는 의미와 설계하는 법 : 멀티 쓰레드 프로그래밍에서 일반적으로 어떤 함수나 변수, 혹은 객체가 여러 스레드로부터 동시에 접근이 이루어져도 프로그램 실행에 문제가 없는 것을 의미합니다.

  • 프로세스 동기화에 대해 설명 : 하나의 자원을 한번에 하나의 프로세스만 이용할 수 있도록 하는 것을 말합니다.

  • 교착상태와 기아상태의 해결방법 : 교착상태란 서로 다른 프로세스가 점유하고 있는 자원을 할당받기 위하여 무한히 대기하는 현상을 말하며 발생조건으로는 환형대기,점유와대기,상호배제,비선점 이 있으며 해결방법으로는 예방(4가지조건중 하나라도 만족하지 않게 함 ) , 회피 ( 데드락 상태에 들어가지 못하도록 알고리즘을 설계 ) , 회복 ( 교착상태 발생시 해결 ) 하는 방법이 있습니다. 기아상태란 여러 프로세스가 부족한 자원을 할당을 받을 때 특정 프로세스가 영원히 자원 할당 되지 않는 상태를 말하며, 이는 우선순위를 변경함으로써 해결이 가능합니다.

  • 가상메모리란? : 실제 메모리에서 공간이 부족한 경우 보조기억장치를 임시로 주기억장치처럼 사용하는 것을 의미합니다.

  • 캐시의 지역성 : 캐시가 효율적으로 동작하려면 적중율을 극대화 시켜야 하며, 이를 위해 캐시에 저장된 데이터가 지역성을 가져야합니다. 지역성은 데이터들의 접근이 시간적,공간적으로 가깝게 일어나는 것을 의미합니다.

데이터베이스


  • 데이터베이스에 인덱스를 사용하는 이유와 장단점 : 데이터베이스에서 인덱스를 사용하는 이유는 검색성능을 향상시키기 위해서입니다. 장점으로는 빠른 검색 속도를 들수 있으며, 단점으로 인덱스를 구성하는 비용이 추가적으로 발생한다는 점입니다.

  • 트랜잭션이란? : 트랜잭션은 데이터베이스의 상태를 변화시키는 하나의 논리적인 작업 단위라고 할 수 있으며, 트랜잭션에는 여러개의 연산이 수행될 수 있습니다.

  • ACID : ACID는 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질입니다. Atomic(원자성)은 트랜잭션의 연산은 모두 수행될 경우에만 적용되고 그렇지 않을 경우 모두 롤백되는 성질을 말합니다. Consistency(일관성)은 트랜잭션이 일어난 이후 데이터베이스는 데이터베이스의 제약이나 규칙을 모두 만족해야 한다는 것을 의미합니다. Isolation(격리성)은 모든 트랜잭션은 다른 트랜잭션으로부터 독립되어야 한다는 의미입니다. Durability(지속성)은 성공적으로 트랜잭션이 수행되었다면, 그 결과는 완전히 반영되어야 한다는 것을 의미합니다.

  • 트랜잭션 격리 수준 :트랜잭션 격리수준은 고립도와 성능의 트레이드 오프를 조절합니다.READ Uncommitted ( 다른 트랜잭션에서 커밋되지 않은 내용도 참조할 수 있다.) READ Committed( 다른 트랜잭션에서 커밋된 내용만 참조할 수 있다. ) REPEATABLE READ( 트랜잭션에 진입하기 이전에 커밋된 내용만 참조할 수 있다.) SERIALIZABLE( 트랜잭션에 진입하면 락을 걸어 다른 트랜잭션이 접근하지 못하게 한다.)

  • 정규화에 대해 설명 : 테이블 간에 중복 데이터를 허용하지 않는다는 것이다. ( 1,2,3,BNF,4,5,6 )

  • JOIN에 대해서 설명 : 둘한 데이터베이스 내의 여러 테이블의 레코드를 조합하여 하나의 열로 표현한 것입니다.
  • RDBMS와 NOSQL에 대해 설명 : RDBMS는 데이터베이스를 이루는 테이블들이 서로 관계를 맺고 모여있는 집합체 이며 NoSql은 테이블간의 관계를 정의하지 않습니다.

  • Redis란 ? : Redis는 key-value store Nosql 데이터베이스로서 싱글스레드로 동작하며 자료구조를 지원합니다. 다양한 용도로 사용될 수 있도록 다양한 기능을 지원하며 데이터의 스냅샷 이나 aof 로그를 통해 복구가 가능해서 어느정도의 영속성도 보장합니다.

  • Redis와 Memchached의 차이 : Redis는 싱글 스레드 기반으로 동작하고 Memcached는 멀티스레드를 지원해서 멀티 프로세싱이 가능합니다. Redis는 다양한 자료구조를 지원하고, memcached는 문자열 형태로만 저장합니다.

  • **

profile
멋쟁이 토마토

2개의 댓글

comment-user-thumbnail
2022년 6월 8일

마지막 **은 욕인가요

1개의 답글