728x90
반응형
이직을 준비하며, 기술면접 질문들을 작성해보려한다.
나와 같이 백엔드 개발자로 추후 행선지를 정할 때 조금이나마 준비했으면 좋겠다 생각!!
아래의 항목들은 반드시 학습하고 답변을 준비해서 가도록 !!
일반 기술 질문
- REST
- 동등성과 동일성의 차이를 아는지?
- 세션이 뭔가요? 서버 여러 대일 때 세션을 어떻게 처리하죠?
- 서블릿이 뭔가요?
- 데이터베이스 인덱스 동작 과정
- 캐시가 무엇인가요? redis 같은 걸 캐싱 서버로 사용해보신적 있으신가요?
- Call by value와 Call by reference 차이
- TDD에 대해 어떻게 생각하시나요?
- TDD가 무엇인가요?
- TDD의 장, 단점?
- PreparedStatment와 Statement의 차이는 무엇인가요?
- 전 프로젝트에서 배포 구조 설명해주세요.
- 그 방법으로 하면 완전한 무중단 배포가 구현이 될까요?
- nginx가 어떤 방식으로 로드밸런싱을 할 지 설명해주세요.
- 잘 모르시면, 어떻게 구현 되어있을 지 추측해서 설명해주세요.
- 클린코드
- 클린코드의 정의가 무엇인가요?
- 클린코드가 뭐라고 생각하는지?
- Docker 왜 썼는지?
- 본인이 생각하기에 Database의 부하와 Application의 부하를 어떤 기준으로 나눌 것 같은지?
- 만약에 일을 하게 됐을 때 그 팀이 코드 리뷰에 대해 보수적이고 페어를 완강하게 거부하는 곳이라면 어떻게 대처할 건지
- Deep Copy와 Shallow Copy에 대해 설명해주세요.
- OAuth 의 흐름에 대해 설명해주세요.
- 객체를 나누는 기준이 무엇인가?
- 커밋 컨벤션에서 feat, chore, refactor 등. 각각 어떤 기준으로 나누어 사용했는지?
- OOP가 무엇인가요?
- OOP를 썼을 때 어떤 점이 좋았고 안좋았는지?
- OOP를 잘하기 위해 어떤 노력을 했는지?
- 객체를 나누다 보면 오히려 코드가 보기 힘들지 않나?
- 클린 코드는 무엇인가요?
- 왜 코드는 클린해야 하죠?
- Test코드는 왜 짜야 합니까?
- Mock을 사용한 이유는?
- 기능이 정상 동작하려면 데이터베이스(외부)를 의존해야 하는데 왜 이 의존을 끊으려고 하는지?
- 사전에서 검색을 제공하는 Application을 만들건데 어떤 자료구조를 쓰실 건가요?
- 기억에 남는 프로젝트와 어떤 점에서 기억에 남는 지 설명해주세요.
- 여기서 아쉬웠던 점을 설명해주시고, 어떻게 개선했는지? 아니면 개선 방안을 설명해주세요.
- 트리 구조에 대해 설명 해주세요.
- 이진 트리에 대해 설명 해주세요.
- Binary Search Tree에 대해 설명해주세요.
- 브라우저에서 서버 응답까지의 흐름
- CI/CD 에 대해 각각 설명해주세요.
- 최근에 하신 프로젝트가 어떤 구조로 되어있는지 그림으로 그리면서 설명해주세요.
- 프로젝트에서 Git flow 적용 하셨다고 하셨는데, 어떤 식으로 하셨는지 설명해주세요.
- 어떤 장점, 단점이 있는지?
- DTO가 무엇이죠?
- Presentation - Application - Domain Layer를 나눈 기준은?
- 각 Layer가 하는 역할은?
- DB Optimizer
- 아는 정렬 알고리즘 설명해주세요
- 그 정렬 알고리즘의 시간복잡도는 어떻게 되나요
- 프로세스와 쓰레드의 차이점은?
- PCB에 저장되는 정보는 어떤 것들이 있나요?
- Context Switching에 대해 설명해 주세요.
- TCP 와 UDP의 차이점에 대해 설명해 주세요.
- 프로젝트에서 단위 테스트 어떻게 하셨나요? 통합 테스트는 어떻게 하셨나요?
- 알고 계신 테스트의 종류를 말씀해주세요. (유닛 테스트, 통합 테스트 등…)
- 각 테스트들에 대해 설명해주세요.
- 로컬 개발 환경에서도 도커를 활용해서 개발하셨는지?
- OOP를 지향하기 위해 어떤 노력을 할 수 있는지?
- Layered Architecture에서 Presentation, Application, Domain, InfraStructure layer의 역할에 대해 설명해 주세요.
- DDD에 대해 알거나 공부해봤는지?
- DDD에서 Domain이 무엇인지?
- CQRS, 이벤트 소싱에 대해 아는지?
- 최근 했던 프로젝트의 패키지 구조에 대해 설명해주세요. (선호하는 패키지 구조)
- Connection Pool을 쓰는 이유는? 단순히 커넥션을 새로 만드는 것과 차이는?
- 그러면 Connection을 만드는 시간을 제외하고는 다른 장점은 없나요?
- Connection Pool의 최대치가 1000개, WAS가 5개라고 해보자. 각 WAS는 200개씩의 Connection을 가지는지? 그렇다면 6번째 WAS가 추가된다면 6번째에는 아무런 Connection도 할당되지 않는지?
- SOLID중 한가지 설명해주세요.
- 재귀의 장점, 단점?
- Sync vs. Async 차이
- MyISAM과 InnoDB의 차이점
- 단방향 암호화의 장점이 뭐냐
- GET/POST의 차이는?
- HTTP vs. HTTPS의 차이는?
- XSS 에 대해 설명해주세요
- XSS 를 막기 위해서는 어떤 방법이 있는지?
- 인증 토큰 방식과 세션을 통한 인증 방식은 어떤 점에서 다른지?
- 백엔드 단에서 성능을 올릴 수 있는 방법은?
- 데이터베이스에서 왜 여러 테이블을 두는지?
- 최근에 했던 프로젝트 구조를 화이트보드 이용해서 설명해주세요.
- Inner Join과 Outer Join에 대해 설명해주세요.
- 보통 면접에선 이런거 물어보던데~ 했는데 혹시 저희가 물어보지 않아서 아쉬웠던 질문이 있나요? 있으시면 질문과 함께 답변 해주세요.
- 마지막으로, 준비 많이 해왔는데~ 또는 이건 꼭 답하고 가고 싶다 하는 내용 있으신가요?
- Github의 장점은?
- Git에서 써본 명령어들은 어떤게 있나요?
- 그 명령어들에 대해서 설명해주세요.
- 코드 스멜을 느끼게 되는 기준은 어떻게 되시나요?
- 코드 스멜을 느끼게 되는 것을 경험 기반으로 설명해주세요.
- Blue-Green 배포에 대해 설명해주세요.
- 구현 하신 부분에서 개선할 점이 있다면 어떤 것이 있는지?
- 그 외에 무중단 배포 방법 아시는 것 설명해주세요.
- 쿠키에 대해서 설명해주세요.
- 로컬 스토리지에 대해 설명해주세요.
- 프론트와 API 서버간에 어떻게 통신을 하는지, 구현을 어떻게 했는지 설명해주세요
- HTTP Method에 대해서 각각 설명해주세요.
- PUT은 update만 되나요?
- CLOSE_WAIT, TIME_WAIT에 대해 설명해주세요.
- 이벤트 같은 것을 할 때(순간적으로 트래픽이 높아질 수 있는 순간) 아키텍처적으로 어떻게 설계할 것인지?
- 쿼리 잘 짜세요?
- Web Server와 WAS의 차이점, 각각 설명해주세요.
- 사용할 수 있는, 사용해본 프로그래밍 언어는 어떤 것들이 있는지? 각각 어느정도의 수준인지?
- 정규표현식에서 =?를 부르는 이름은? 그 외 정규표현식 질문들 (어떤 정규표현식이 뜻하는 의미 해석이라던가)
- WebSocket 사용할 때 기본 프로토콜을 사용했는지? 아니면 직접 구현한 프로토콜을 사용했는지? (어떤 의미인지 모르겠음)
- Reactive programming과 Observable에 관해 설명해주세요.
- Reactive programming과 함수형 프로그래밍은 어떤 차이가 있는지 각각 어떤 특징이 있는지 설명해주세요.
- 정적타이핑 언어와 동적타이핑 언어의 장, 단점을 설명해주세요.
- Http 제외하고 다른 프로토콜에 대해 아시는 거 설명해주세요.
- Non Blocking I/O와 Blocking I/O에 대해서 설명해주시고, 각각 어떤 곳에 사용되는지 예시를 들어주세요.
- List의 장점을 Array와 비교하여 설명해주세요.
- 테스트가 무엇인가요?
- 테스트를 왜 작성하셨나요?
- 본인만의 리팩토링에 대한 정의?
- 리팩토링은 어느 시점에 해야할까요?
- 유연한 코드는 무엇인가요?
- 응집도 vs. 결합도
- 테스트하기 쉬운 코드는 어떤 코드인가요?
Spring 질문
- Spring에서 DI나 IOC 개념을 설명해주세요.
- Spring에서 Service, Controller, Repository annotation의 차이점
- Controller, RestController는 뭐가 다른가요? 응답이 어떻게 다른가요?
- Spring에서 서비스와 컴포넌트의 차이
- 다른 프레임워크들도 많이 있는데, 특별히 Spring boot를 사용한 이유가 있는지?
- IoC Container 직접 만든다면 어떻게 구현하실 생각인가요?
- 스프링에서 빈 등록 방법
- Spring MVC 설명
- Spring MVC 에서 요청이 들어왔을 때부터 응답이 나갈 때까지의 흐름을 설명해주세요.
- ControllerAdvice가 무엇인가요?
- Interceptor와 Filter 차이
- Field 주입과 생성자 주입, Setter 주입
- Spring Web MVC에서 요청이 들어와서 Database까지의 흐름
- AOP에 대해 설명해주세요
- SpringBoot 왜 쓰셨나요?
- SpringBoot의 장점은 무엇인가요?
JPA 질문
- ManyToOne 쓴 이유는? 반대쪽에서 OneToMany 쓸수도 있지 않나요?
- JPA를 왜 쓰나요?(ORM이 나오게 된 이유) 어떤 장점이 있죠?
- 쓰면서 불편한 점 없었는지?
- Hibernate는 뭘까요?
- Open Session In View
- JPA 사용할때랑 직접 SQL 사용할때랑 어떤 차이?
- @transactional 동작 과정
- readOnly 붙인 이유
- JPA FetchType
- LAZY와 EAGER 각각 어떤 기준으로 사용하시는지?
- N+1 문제
- 엔티티 매핑을 할 때 ManyToOne을 lazy로 설정해주지 않았던 이유
- JPA 사용하면서 맞닥뜨린 문제 있는지?
- 본인이 생각하기에 칼럼이 많고 적고의 기준은 어떻게 되는지?
- JPA에서 PK는 어떻게 설정하는지?
Java 관련 질문
- 객체가 JVM 메모리에 저장될 때 어디에 저장되는지?
- Stream이 무엇인가요?
- 롬복이 생성하는 메서드가 어느 시점에서 생성되는 지 아는지?
- 메서드를 분리하는 자신만의 기준이 있는지?
- REST Docs 왜 썼는지?
- StringBuilder와 StringBuffer
- HashMap의 시간 복잡도 말해주세요.
- 해당 사전에서 단어의 일부분으로 검색할 수 있는 일종의 자동완성 기능을 추가하려고 한다. 예를 들어 a를 찾으면 a로 시작하는 단어 5개, ap로 찾으면 ap로 시작하는 단어 상위 5개, 이걸 어떤 식으로 구현할 것인지?
- Enum, 추상 클래스 어떤 식으로 사용했는지 설명해주세요.
- domain package에 repository, entity 들어있는데 그렇게 한 이유?
- 그러면 domain은 무엇인가요?
- Integer 하나만 있는 Vo 객체를 만든 이유는 무엇인가요?
- 자바 디자인패턴 아는 것 중 하나 설명해주세요.
- Checked Exception은 언제 사용하나요?
- Unchecked, Checked Exception 차이가 뭔가요?
- Custom Exception은 다 RuntimeException 상속 했는데, 특별한 이유가 있는지?
- equals and hashcode 재구현한 이유?
- JVM과 GC에 대해 설명해주세요.
- GC가 언제 동작하는지 설명해주세요.
- JUnit의 생명주기에 대해 아는지?
- Java의 세 가지 변수에 대해 JVM 메모리와 연관지어 설명해주세요.
- Generic을 쓰는 이유는?
- Java에서 동일한 String을 새로 만들 때마다 객체가 생성되는지?
- 예를 들어 String a = Apple; 해놓고, String b = Apple;하면 String b를 위한 공간이 새로 할당 되는지?
- Java에서 람다가 무엇인지 말씀해주세요.
- JVM 기반 언어의 특징을 설명해주세요.
- Java 8 에서 나온 Date, Time API에 대해 아는대로 말씀해주세요.
- Overloading, Overriding을 각각 설명해주세요.
- String을 ==로 비교하면 안되는 이유를 설명해주세요.
- Integer.MIN_VALUE에는 어떤 값이 들어가있나요? 어떤 컴퓨터에서 찍어도 동일한 값인가요?
- JUnit 4 와 JUnit 5의 차이를 설명해주세요.
기술면접 질문 참고1. https://smjeon.dev/etc/interview-question/#%EC%9D%BC%EB%B0%98-%EA%B8%B0%EC%88%A0-%EC%A7%88%EB%AC%B8
기술면접 질문 답변1 : https://junjangsee.github.io/2019/05/15/interview/interview/
인성 면접 질문
http://210.93.85.3/xe/board_acIG31/23341
반응형
'일상' 카테고리의 다른 글
퍼센트 증가 감소 차이 계산기 (0) | 2022.09.14 |
---|---|
KPT 회고란 ? (0) | 2022.08.24 |
스크랩봇 (0) | 2020.09.03 |
아이튠즈 아이폰 벨소리 만들기 (0) | 2020.06.07 |
아이튠즈 ACC 버전 비활성화 (0) | 2020.06.07 |
댓글