Back-End 면접질문1

Lee·2020년 9월 30일
2

오늘은 개발자 면접질문에 대해 정리해보자. 통상적으로 여러회사 면접질문이 있지만 일단 나는

벡엔드쪽이기 때문에 관련 질문이 많을 것 같다. 어떠한 면접질문이 나온다 하고 딱! 예상하기는

힘들지만 통상적으로 많이 나올법한 것들을 준비할 수는 있을 것 같다. 생각나는대로 정리하였으

나 나올만한 문제 혹은 나왔던 문제들을 많이 정리하였다!

OS 관련

프로세스와 스레드의 차이점이 뭘까요?

  • 자원을 할당받는 주체가 다릅니다
    프로세스는 운영체제로부터 자원을 할당받아 실행하고
    스레드는 프로세스로부터 자원을 할당받아 실행합니다
  • 또한 하나의 프로세스는 여러개의 스레드를 생성가능하며
    각 스레드는 개별스택을 가지고, 프로세스의 전역 메모리 공간을 공유하며 프로그램을 실행합니다
  • 보통 프로세스는 코드/데이터/스택/힙 메모리 영역을 기반으로 실행하며,
  • 스레드는 프로세스 안에서, 개별적인 스택을 가지고, 코드/데이터/힙 영역을 공유하며 실행합니다.

스크립트 언어와 컴파일 언어를 나열하고 차이점을 말해보세요

  • 스크립트 언어로는 python, ruby, javascript 등이 있으며
    컴파일 언어로는 C, C++, JAVA 등이 있다
  • 컴파일 언어는 컴파일러를 통해 사전에 컴파일 되어, 기계어 상태로 실행되므로 실행이 빠르다
    또한 컴파일 단계에서 전체 코드를 기계어로 변환시 최적화를 하여 실행속도를 더 빠르게 할 수 있다
  • 반면 스크립트 언어는 컴파일 단계 없이, 실행 단계에서 한 줄 씩 기계어로 번역 후, 실행되므로 통상 컴파일 언어보다 실행이 느리다. 또한 전체코드에 대한 실행코드 최적화가 어렵다

동기식과 비동기식의 차이점과 장단점을 말해보세요

  • 차이점은
    동기식은 요청에 대한 응답을 기다린 후 응답이 오면 다음 요청을 처리하는 방식인 반면
    비동기식은 요청에 대한 응답을 기다리지 않고 다음 동작을 진행한다는 점이다
  • 장단점은
    동기식은 구성이 단순하고 순서대로 실행이 가능하지만 여러 일을 동시에 수행하는 멀티태스킹이 불가능하다
    반면 비동기식은 동시에 여러 일을 수행할 수 있지만, 일정시간당 요청량이 많아질 경우 부하가 발생할 수 있으며 이를 위한 추가적인 처리가 필요할 수 있다

DB 관련

데이터베이스에서 인덱스를 사용하는 이유와 장단점은 뭘까요?

  • 인덱스는 데이터를 논리적으로 정렬해서 검색과 정렬 속도를 높이기 위해 사용합니다
  • 단, 데이터 삽입, 변경이 수시로 일어나면 매번 인덱스를 변경해야 하므로, '검색속도'를 높이기 위한 인덱스 사용은 신중해야 한다

JAVA 관련

JVM과 JAVA프로그램 실행과정에 대해 설명해보세요

  • JVM이란 JAVA Virtual Machine의 약자로 자바프로그램을 자바 API를 기반으로 실행하는 역할을 합니다
  • JAVA프로그램 실행 과정은
  1. 프로그램이 실행되면 JVM이 OS로부터 해당 프로그램이 필요로 하는 메모리를 할당받고
  2. 자바 바이트 코드로 변환된 클래스파일을 클래스 로더를 통해 JVM에 로딩합니다
  3. 로딩된 class파일은 execution engine을 통해 해석되고, 실행됩니다
  4. 필요시 garbage collection을 수행하여, 참조되지 않은 객체들을 삭제합니다

GC(Garbage Collection)이 필요한 이유를 설명해 보세요

  1. JAVA 프로그램은 메모리를 명시적으로 지정해서 해제하지 않기 때문에, Garbage Collection 을 통해 더 이상 필요없는 객체를 찾아 지우는 작업을 수행합니다
profile
두비두비둡

0개의 댓글