본문 바로가기

면접

기술 질문

목차

    기술질문

    JAVA

    • 자바의 장점과 단점을 설명해주세요
    • 자바 데이터 타입 중 기본형과 참조형의 차이에 대해 설명해주세요.
    • JVM이란 무엇인가?
    • JVM의 구조와 Java의 실행방식을 설명해주세요.
    • GC가 무엇인지, 필요한 이유는 무엇인지, 동작방식에 대해 설명해주세요.
    • 컬렉션 프레임워크에 대해서 설명해주세요.
    • 자바의 컬렉션에 대해 설명해주세요
    • 제네릭에 대해서 설명해주세요.
    • Java 8에서 Stream을 사용해보셨나요?
    • Java의 접근 제어자의 종류와 이에 대해 설명하세요.
    • Enum 사용해보셨나요? Enum이란 무엇인가요?
    • equals를 오버로딩하여 사용해봤나요? hashCode란 무엇인가요?
    • Call by Value와 Call by Reference에 대해 설명해달라
    • 가비지 컬렉션 알고리즘에 대해 설명해주세요
    • 자바 reflection에 대해 설명해주세요
    • 애노테이션에 대해서 설명해주세요.
    • 오버라이딩과 오버로딩이 무엇이며 어떤 차이가 있을까요?
    • 인터페이스와 추상클래스의 차이점에 대해 설명해주세요.
    • 인터페이스는 왜 사용하는가?
    • 클래스는 무엇이고 객체는 무엇인가요?
    • 정적(static)이란 무엇인가요?
    • 자바의 원시타입들은 무엇이 있으며 각각 몇 바이트를 차지하나요?
    • 접근 제어자의 종류와 이에 대해 설명해주세요.
    • 객체지향에 대해서 설명해주세요.
    • MVC 패턴에 대해 설명해주세요
    • 추상화에 대해 설명해주세요
    • SOLID(객체지향 5대원칙)에 대해서 설명해주세요.
    • 동기, 비동기의 차이를 아는지?
    • 동일성(identity)와 동등성(equality)에 대해 설명해주세요. (equals(), ==)
    • 원시타입과 참조타입의 차이에 대해 설명해주세요.
    • String, StringBuilder, StringBuffer 각각의 차이에 대해 설명해주세요.
    • Checked Exception과 Unchecked Exception에 대해 설명해주세요. 스프링 트랜잭션 추상화에서 rollback 대상은 무엇일까요?
    • Java8에서 추가된 기능에 대해서 설명해주세요.
    • try-with-resource에 대해서 설명해주세요.
    • 강한 결합과 느슨한 결합이 무엇인지 설명해주세요.
    • 직렬화와 역직렬화에 대해서 설명해주세요.
    • 자바의 동시성 이슈(공유자원 접근)에 대해 설명해주세요.
    • Mutable 객체와 Immutable 객체의 차이점에 대해 설명해주세요.
    • 자바에서 null을 안전하게 다루는 방법에 대해 설명해주세요.
    • 클래스 변수, 인스턴스 변수, 지역변수가 무엇이냐.
    • List와 배열의 차이점이 무엇이냐? 차이가 있다면 왜 나는가?
    • List와 Map의 차이점은?
    • 직렬화 란?
    • 배열 안 중복제거를 위한 방법이 뭐가 있을까요?
    • Java는 멀티 스레드(Multi Thread) 환경인데 멀티스레드란 무엇인가?
    • 멀티 스레드(Multi Thread) 사용 이유는?

     

    Spring Framework

    더보기

    Spring MVC에 대해 설명해주세요.

    Spring Web MVC의 Dispatcher Servlet의 동작 원리에 대해서 간단히 설명해주세요.

    스프링 프레임워크는 왜 쓰나? 스프링의 특징에 대해 아는대로 이야기 해봐라

    스프링 프레임워크는 요청을 어떻게 처리하는지 전반적인 흐름을 설명해봐라

    더보기

    IoC와 DI에 대해서 설명해주세요.

    IoC 컨테이너란?

    IoC 컨테이너의 장점은?

    DI란?

    DI의 장점은?

    DI의 종류는?

    순환참조가 무엇이고 언제 발생하는가?

    생성자 주입을 사용해야 하는 이유는?

    Spring IoC, DI의 동작 과정은?

    @Autowiring의 동작 과정은?

    DI와 IoC의 차이는?

     

    • Spring AOP란?
    • 리퀘스트 스코프를 사용할 경우 어떤 문제점이 존재할까요?
    • DTO가 무엇인지 설명해 주세요.
    • Spring Bean이란 무엇인가요?
    • 스프링 Bean의 생성 과정을 설명해주세요.
    • 스프링 Bean의 Scope에 대해서 설명해주세요.
    • 프론트 컨트롤러 패턴이란 무엇인가요?
    • Servlet Filter와 Spring Interceptor의 차이는 무엇인가요?
    • Spring에서 CORS 에러를 해결하기 위한 방법을 설명해주세요.
    • Bean/Component 어노테이션에 대해서 설명해주시고, 둘의 차이점에 대해 설명해주세요.
    • POJO란 무엇인가요? Spring Framework에서 POJO는 무엇이 될 수 있을까요?
    • Spring Web MVC에서 요청 마다 Thread가 생성되어 Controller를 통해 요청을 수행할텐데, 어떻게 1개의 Controller만 생성될 수 있을까요?
    • Filter는 Servlet의 스펙이고, Interceptor는 Spring MVC의 스펙입니다. Spring Application에서 Filter와 Interceptor를 통해 예외를 처리할 경우 어떻게 해야 할까요?
    • Spring Application을 구동할 때 메서드를 실행시키는 방법에 대해 설명해주세요.
    • 의존성과 설정값을 생성자 인자로 주입해야 하는 이유에 대해 설명해주세요.
    • 오버로딩과 오버라이딩의 차이점이 무엇인가요?
    • Spring에서 CORS 에러를 해결하기 위한 방법은?

     

    JPA

    • JPA의 영속성 컨텍스트가 해주는 역할이 무엇이냐?
    • JPA 영속성 컨텍스트의 이점(5가지)을 설명해주세요.
    • JPA를 사용하면 좋은점?
    • JPA Propagation 전파단계를 설명해주세요.
    • JPA를 쓴다면 그 이유에 대해서 설명해주세요.
    • N + 1 문제는 무엇이고 이것이 발생하는 이유와 이를 해결하는 방법을 설명해주세요.
    • JPA를 사용했던데 Mybatis 사용해본 경험이 있는지? JPA와 Mybatis는 무엇이 다른지?

     

    객체지향

    • 객체지향이 무엇이라고 생각하시나요? 자유롭게 이야기해주세요.
    • HttpServletRequest가 클래스인데 이것을 쓰기 위해선 어디서 객체 생성을 해주나.
    • AOP와 DI를 설명해보아라.
    • OOP에서 지향하는 바가 무엇일까요?

     

    디자인 패턴

    • 싱글톤 패턴에 대해 설명해주세요.
    • 데코레이터 디자인패턴에 대해 설명해주세요
    • 데코레이터 디자인패턴에 대해 설명해주세요.
    • 싱글톤이 적용되지 않는 경우가 있는데, 어떤 경우에 그런 일이 생기나요?
      <- Provider scope가 디폴트가 아닐 경우 싱글톤이 적용되지 않습니다.
    • 가교 패턴(브릿지 패턴)에 대해서 설명해주세요.
    • 전략 패턴에 대해서 설명해주세요.
    • 빌더 패턴에 대해서 설명해주세요.
    • 팩토리 메서드 패턴에 대해서 설명해주세요.
    • 퍼사드 패턴에 대한 예를 들어주세요.

     

    테스트

    • 테스트 코드에 대해서 어떻게 생각하고, 작성하나요?
    • TDD를 알고 있나요? TDD에 대해서 어떻게 생각하나요?
    • 테스트 커버리지에 대해서 어떻게 생각하나요?
    • Test Code를 짜보셨을까요? 짜는 이유는 무엇일까요?

     

    보안/인증

    • JWT의 구조를 설명해주세요.
    • JWT는 왜 사용을 하셨나요? 구조에 대하여 설명해주세요.
    • 패스워드를 암호화 하는 단방향 암호화에 대해서 설명해 주세요.
    • 비대칭키 암호화, 대칭키 암호화에 대해 간단히 설명해주세요.
    • 단방향 암호화에 대해서 간단히 설명해주세요.
    • OAuth에 대해서 간단히 설명해주세요.
    • JWT와 OAuth의 차이는 무엇이 있을까요?
    • SQL Injection에 대해서 간단히 설명해주세요.
    • XSS에 대해서 간단히 설명해주세요.
    • CSRF에 대해서 간단히 설명해주세요.

     

    Database

    • In-memory DB에 대해서 설명해주세요.
    • Redis를 사용하신 이유가 무엇인가요?
    • Redis와 Memcached의 차이를 이야기해주세요.
    • Redis를 비전공자에게 설명해준다고 생각하고 이야기해주세요.
    • Redis의 단점은 무엇이 있을까요?
    • Redis를 활용하여 로그아웃을 어떻게 구현했는지 설명해주세요.
    • 데이터베이스 정규화에 대하여 설명해주세요.
    • 비정규화는 무엇인가요?
    • Database Injection에 대해 아는대로 이야기해주세요.
    • ORM이 편하고 좋은데, SQL을 알아야만 할까요?
    • SQL로 간단한 문제 드릴테니 풀어주세요.
    • RDBMS와 NoSQL은 언제 사용하는 것이 좋을까요?
    • ORM이 무엇인지 설명해 주세요.
    • 데이터베이스에서 인덱스를 사용하는 이유 및 장단점에 대해 설명해주세요.
    • 트랜잭션에 대해서 설명해주세요.
    • ACID에 대해서 설명해주세요.
    • 트랜잭션 격리 수준(Transaction Isolation Levels)에 대해서 설명해주세요.
    • 정규화에 대해서 설명해주세요.
    • JOIN에 대해서 설명해주세요.
    • RDBMS vs NOSQL에 대해서 설명해주세요.
    • Redis에 대해서 간단히 설명해주세요.
    • Elastic Search에 대해서 간단히 설명해주세요.
    • Elastic Search의 인덱스구조와 RDBMS의 인덱스 구조의 차이에 대해 설명해주세요.
    • Elastic Search의 키워드 검색과 RDBMS의 LIKE 검색의 차이에 대해 설명해주세요.
    • MongoDB에 대해서 간단히 설명해주세요.
    • CAP 이론과, Eventual Consistency에 대해서 설명해주세요.
    • 데이터베이스 옵티마이저에 대해 설명해주세요
    • 인덱스가 뭔지, 직접 사용해 본 적이 있는지?
    • 동적 쿼리 사용해본 경험이 있는지?
    • 테이블 키 설정은 어떻게 구성했는지?((참고) 실무에서는 외래키를 사용하지 않는 경우가 많다)
    • 무결성이란?
    • DB Connection Pool 이란?

     

    Deploy

    • 도커에 대하여 설명하고, 사용하는 이유를 이야기해주세요.
    • 도커가 생겨나게 된 배경, 역사에 대해서 설명해달라.
    • 가상머신과 도커의 차이를 설명해주세요.
    • 컨테이너 관리도구는 도커가 아니라 다른 것도 있는데 왜 도커를 사람들이 많이 사용할까요?
    • 도커라는 컨테이너 관리 툴이 있는데 쿠버네티스를 사용해야하는 이유는 무엇인가
    • 컨테이너 환경에서의 디버깅은 어떤식으로 하며 상대적으로 어려운 점은 무엇인가요?
    • 쿠버네티스에 대하여 설명하고, 사용하는 이유를 이야기해주세요.
    • 쿠버네티스는 어떤 구조로 실행이 되는지 설명해주세요.
    • CI/CD에 대하여 설명해주세요. CI와 CD의 차이점이 무엇인지 설명해 주세요.
    • AWS 인프라를 구축해보았다면 설명해주세요.
    • 로드 밸런서에 대해서 설명해주세요.
    • 리버스 프록시에 대해서 설명해주세요.
    • Fault-tolerant(무정지) 시스템으로 가기 위해 필요한 방법에 대한 생각을 말해주세요.
    • DevOps가 무엇인지 설명해주세요.
    • 리눅스를 다룰 줄 안다고 했는데, 리눅스 명령어를 아는대로 모두 이야기 해봐라
    • 리눅스 서버가 갑자기 느려졌을 때, 어떻게 대응할 것인지 이야기 해봐라
    • AWS EC2를 직접 구축했다고 했는데 초기 설정을 어떻게 했는지 모두 이야기 해봐라
    • AWS에 배포 해보셨다고 하는데 로드 밸런싱 해봤는지?

     

    네트워크

    • TCP와 UDP의 차이점에 대해서 설명해보세요.
    • TCP 3, 4 way handshake에 대해서 설명해보세요.
    • HTTP와 HTTPS의 차이점에 대해서 설명해보세요.
    • HTTPS에 대해서 설명하고 SSL Handshake에 대해서 설명해보세요.
    • GET과 POST의 차이점에 대해서 설명해보세요.
    • HTTP 메서드와 이것이 하는 역할에 대해서 설명해보세요.
    • RESTful이란 무엇이며, 이것에 대해서 아는대로 설명해보세요.(보충필요)
    • CORS란 무엇이며 이것에 대해서 설명해보세요.
    • OSI7계층과 그 존재 이유, TCP/IP 4계층에 대해 설명해보세요.
    • 웹 서버 소프트웨어(Apache, Nginx)는 OSI 7계층 중 어디서 작동하는지 설명해보세요.
    • 웹 서버 소프트웨어(Apache, Nginx)의 서버 간 라우팅 기능은 OSI 7계층 중 어디서 작동하는지 설명해보세요.
    • Google.com을 쳤을 때 벌어지는 일을 설명해주세요. <- AWS 코리아에서 적어주신게 있어서 그쪽 링크로 걸어놨습니다.
    • 인터넷(Internet)은 어떻게 작동할까?
    • HTTP는 무엇일까?
    • 브라우저(Browser)는 무엇이고 어떻게 작동할까?
    • DNS는 무엇이고 어떻게 작동할까?
    • 도메인 이름(Domain Name)은 무엇일까?
    • 웹 호스팅(Web Hosting)은 무엇일까?
    • URL과 URI의 차이점이 무엇인가요?
    • http와 https의 차이를 설명해주세요.
    • 세션과 쿠키의 차이는?

     

    운영체제

    • 프로세스와 스레드의 차이를 설명해보세요.
    • 컨텍스트 스위칭에 대해 설명해보세요.
    • 동기와 비동기의 차이(블로킹, 넌블로킹) / 장단점에 대해 설명해보세요.
    • 멀티스레드 프로그래밍에 대해 설명해보세요.
    • Thread-safe 하다는 의미와 설계하는 법을 설명해보세요.
    • 프로세스 동기화에 대해 설명해보세요.
    • 교착상태와 기아상태의 해결방법에 대해 설명해보세요.
    • 세마포어와 뮤텍스의 차이에 대해 설명해보세요.
    • 가상 메모리에 대해 설명해보세요.
    • 캐시의 지역성에 대해 설명해보세요.
    • 프로세스 관련 용어를 설명해보세요. (알아만 둡시다.)

     

    CS

    • 세션과 쿠키의 차이를 설명해주세요.
    • 알고있는 자료구조에 대해 설명해주세요.
    • 왜 회사들은 백엔드 개발자에게 자료구조나 알고리즘을 코딩테스트같은 것으로 확인을 하려고 하는 것일까요?
    • 트랜잭션에 대해 설명해주세요.

     

    알고리즘, 자료구조

    • 알고리즘 문제를 풀 때 어떻게 푸시는지 (문제해결방법)
    • 큐와 스택의 차이에 대해 설명해주세요 & 언제 큐를 사용하는 것이 좋고, 언제 스택을 사용하는 것이 좋을까요?
    • 시간 복잡도를 계산해주세요.
    • 배열과 링크드 리스트의 차이를 설명해주세요.
    • List와 Set의 차이에 대해서 설명해주세요.
    • Hash Function, HashTable에 대해서 설명해주세요.
    • Stack, Queue에 대해서 설명해주세요.
    • Heap, Priority Queue에 대해서 설명해주세요.
    • Tree, Binary Tree, BST, AVL Tree에 대해서 설명해주세요.
    • BST의 최악의 경우의 예와 시간복잡도에 대해서 설명해주세요.
    • 피보나치 수열을 코드로 구현하는 방법에 대해서 설명해주세요.
    • DFS, BFS에 대해서 설명해주세요.
    • 정렬, 탐색에 대해 설명해주세요.
    • 정렬 알고리즘 아는 게 있다면 하나 설명해봐라
    • 탐색 알고리즘에는 어떤게 있고, 특징은 무엇인지? (BFS, DFS...)
    • 컬렉션 프레임워크의 종류에 대해 각각 설명해달라 (List, Set, Map)
    • 프로젝트를 진행하면서 특정 자료구조/알고리즘을 사용해 문제를 효율적으로 해결한 경험이 있다면 소개해달라

     

    Git

    • git flow에서 존재하는 브랜치, 각각의 역할을 설명해주세요.
    • 사용하신 깃의 형태를 설명해주세요. (깃플로우, 깃헙플로우, 깃랩플로우 같은 것)
    • 코드 컨벤션에 대해서는 누군가 조언을 해서 그렇게 작업하신건가요?
    • 리팩토링에 대하여 알고 계신가요? 코드 리팩토링의 의미가 무엇일까요?
    • 리팩토링을 할 때 고려해야되는 사항, 필요하다고 생각하는 상황에 대해 설명해주세요.

     

    프로젝트

    • 프로젝트를 간단히 소개하고, 자신은 어떤 역할을 수행했는지 설명해달라
    • 프로젝트 중 @@는 어떤 방식으로 구현했는지, 왜 이런 방식을 사용했는지 설명해달라
      • 기술 면접의 핵심 중에 핵심 질문.. 무수한 꼬리질문을 만날 수 있다
      • 이건 왜 이렇게 구현하셨나요? 그냥 이렇게 하면 되는거 아니에요? 하면 당황하게 될 확률이 높다
    • 프로젝트 중에서 가장 도전적인, 어려웠던 부분은 어떤 부분이었는지. 그리고 이를 어떻게 해결했는지
    • 프로젝트를 하면서 가장 큰 실수를 한 것이 있다면 무엇인지?
    • 프로젝트를 하면서 어떤 부분이 가장 힘들었는지?
    • 원활한 프로젝트 진행을 위해 희생하거나 양보했던 경험이 있는지?
    • 회사에서 사용해보고 싶은 기술이 있는지?
    • 현재 관심을 갖고 있는 기술이 있다면? 
    • 가장 최근에 공부한 내용은 무엇인가? 가장 최근에 읽은 개발 서적은 무엇인지 내용을 간단하게 설명해봐라
    • 가장 최근에 봤던 IT 이슈 또는 신기술은 무엇인지?
    • 기타 대외활동에 관한 질문
    • 학교에서 들었던 과목 중 가장 기억에 남는 강의가 있다면 무엇인지
    • (코테 전형이 있었다면) 코딩 테스트는 난이도가 어땠는지? 할만 했는지?

     

    기타

    • 스페셜리스트, 제너럴리스트 중에 무엇이 더 중요하다고 생각하는지
    • 모놀리식 아키텍처와 MSA에 대해서 설명해주세요.
    • 스크립트 언어와 컴파일 언어를 나열하고 차이점을 설명해주세요.
    • 대용량 트래픽에서 장애가 발생하면 어떻게 대응할 것인가요?
    • CPU 부하가 큰 작업이 진행되서 이벤트루프에 묶여가지고 서버가 멈추면 어떻게 해결해야하나요?
      • 이거 외부 애플리케이션(AWS,K8S)말고 자체적으로 할 수 있는 방법 찾습니다..

    '면접' 카테고리의 다른 글

    Spring AOP란?  (0) 2023.08.07
    Spring DI/IoC  (0) 2023.08.07
    Spring MVC  (0) 2023.08.02