면접 질문 리스트
시간이 지나면서 축적되고 있어 중복된 질문이 있을 수 있습니다. 제보주시면 수정하겠습니다.
기업 면접 질문 리스트
Java Backend 개발자 면접 때 나온 질문 리스트 정리입니다. 계속해서 추가합니다. 질문에는 정답이 있는 질문도 있지만, 정답이 없는(본인의 생각을 물어보는) 질문들도 있습니다. 본인의 생각을 확실하게 이야기 할 수 있으면 좋을 것 같습니다.
인성 질문
- 왜 전 회사 그만두고 개발하러 오셨나요?
- 퇴사한 것을 후회하지 않으시나요?
- 지원한 이유는 무엇인지?
- 개발이 왜 좋은지?
- 개발을 왜 시작했는지?
- 어떤 점에서 개발자가 되고 싶은지?
- 미래에 어떤 개발자가 되고 싶은지?
- 전공 과목중에 좋아하는 과목이랑 싫어하는 과목 각각
- 어떤 서비스를 하고 싶은지?
- 만약 떨어진다면 어떤 기업에 또 지원할 것인지?
- 5년, 10년 뒤에는 어떤 엔지니어가 되어있을지?
- 주변 친구들 중 한명 칭찬해주세요
- 칭찬 한개만 더 해주세요
- 지원하는 회사의 장점은?
- 회사에 궁금하신점 있으신가요?
- 본인의 강점, 단점은?
- 기술적인 이슈를 해결했던 경험을 이야기 해주세요.
- 입사한 팀이 코드리뷰, 클린코드, 테스트 아무것도 안하면 어떻게 하실 건가요?
- 열심히 하지만 본인이 원하는 만큼 따라오지 못하는 팀 동료들이 있을 수 있는데, 이럴 때는 어떻게 하는지?
- 본인이 팀 프로젝트에서 협업 측면에서 맡았던 역할을 이야기 해주세요.
- 팀 프로젝트에서 아쉬웠던 점 이야기 해주세요.
- 전공을 하셨는데, 전공 관련해서 최근에 부족하다고 느껴서 공부하고 있는 분야가 있는지?
- 최근에 재미있어 하는 일은?
- 시간 남을 때 하는 일은? (개발 말고..)
- 토이프로젝트 하고 있다고 하신 거 어떤 거 하시는 지 말씀해주세요.
- 입사해서 원하는 선배의 모습이 무엇인가요?
- 본인이 속한 그룹에서 몇 등 정도 하는 것 같은지?
- 그러면 본인보다 잘하는 동료들은 어떤 점에서 더 잘하는 것 같은지?
- 더 못한다고 한 사람들은 어떤 점에서 더 못하는지?
- 사내 스터디에서 어떤 것을 공부하고 싶은지?
- 지금 제일 가고 싶은 회사는?
- 특별히 가고 싶은 회사는? 특정 도메인인지? 회사의 분위기인지? 어떤 점을 중점적으로 보는지?
- 좋아하는 앱이 있는지?
- 그 앱에 추가하고 싶은 기능이 있는지?
- 본인이 생각하기에 좋은 개발 문화라는 것은 어떤 것인지?
- 팀 프로젝트에서 힘들었던 팀원이 있다면? 어떤 점에서 힘들었는지?
- 어떻게 해결했는지?
- 페어 프로그래밍은 어떤 식으로 진행했는지?
- 사람들과 협업하면서 가장 어려웠던 점이 있다면?
- 전에 했던 프로젝트가 어떤 프로젝트였고, 초기에 어떤 계획을 했고 어느정도 달성했는지, 맡은 역할은 무엇이었는지?
- 프로젝트에서 기간이 얼마 남지 않았을 때 무엇에 집중하는지?
- 스터디 하고 계시는 것 있는지?
- 문서화는 왜 해야한다고 생각하시나요?
- 다른 사람이 생각하기에 본인의 장, 단점은?
- 그 단점을 극복하기 위해 노력했던 것은?
- 지금 읽고 계신 책은 무엇인가요?
- 지금 공부하고 계신 분야는 무엇인가요?
- 좋은 개발문화는 무엇인가요?
- 그러면 좋은 사람, 좋은 개발자는 어떤 사람인가요?
- 좋은 개발자의 요소를 세 가지 정도만 말씀 해주세요.
- 회사는 교육기관이 아닙니다. 당신이 회사에서 실력을 키우고 배울 수 있고 함께 성장할 동료를 얻을 수 있다면, 당신이 회사에 기여할 수 있는 것은 어떤 것이 있죠?
- 페어 프로그래밍의 장점은?
- 회사의 입장에서 페어 프로그래밍의 장점은?
- 못하는 개발자 두명이 페어 프로그래밍을 한다면 오히려 능률이 떨어지는 것이 아닌지?
- 협업을 하면서 가장 중요하게 생각하는 것은?
- 소통 능력을 키우기 위해서 어떤 일을 할 수 있을까?
- 실무에서 개발자 외의 사람들과 소통할 경우에는 어떻게 해야할까?
- 새로운 언어를 배울 때 어느정도 시간이 걸리시나요?
- 개인적으로 공부를 어떻게 하시는지 말씀해주세요. (강의, 책 등)
- 리팩토링에 관한 책 읽어보셨나요?
- 회사와 본인을 어떻게 연관짓나요?
- 우리 회사에 기대하고 있는 것이 있나요?
- 그러면 우리가 지원자분께 기대할 수 있는 것은 무엇이 있나요?
- 활동하고 있는 IT 커뮤니티 있나요?
- 최근 관심을 가지고 있는 IT 분야는?
- 본인은 팀장 성향인지, 팀원 성향인지?
- 그럼 예를 들어 친구들끼리
여행가자!
해서 각자 의견을 물을 때 꼭 필요하지 않다면 굳이 의견을 내지 않는 스타일 이신가요?
- 그럼 예를 들어 친구들끼리
- 팀원과 갈등이 발생했을 때 어떻게 해결하는지?
- 설득을 하려고 해도 끝까지 일치하지 않을 수 있는데 이럴 땐 어떻게 하는지?
- 프로젝트의 기한도 길지 않아서 두 방식을 모두 해볼 수 없다고 가정하면 어떻게 해야할 지?
- Frontend Framework를 사용하지 않고 바닐라 자바스크립트를 사용한 이유는 무엇인가요?
- (어떤 프로젝트에 대한 설명을 하고 나서) 그렇게 하기로 결정한 이유는 무엇인가요?
- (스프링 시큐리티에 관심이 있다고 하고 난 후) 스프링 시큐리티에 가장 최근에 올라온 이슈는 무엇인지?
- 전 직장에서도 업무가 맞지 않아서 퇴사하셨다고 하셨는데, 그러면 여기서도 업무가 맞지 않으면 동일하게 하실 것인지?
- 전 직장에서 퇴사하신 것을 후회하지 않으십니까?
- OAuth에 대해서는 왜 공부하셨나요? (XX 에 대해서는 왜 공부하셨나요?)
- 입사 후 쉬운 일, 어려운 일이 있을 때 이 일에 대한 분배를 어떻게 하실 건가요?
- 만약 떨어진다면 어떤 점이 부족해서 떨어졌다고 생각할지?
- 공백기간동안 뭘 하면서 보내셨나요?
- 인생을 살면서 무엇인가 하나에 푹 빠져본 적이 있으신가요?
- 인생에서 가장 후회되는 것이 있다면 어떤 것인가요?
- 가장 자신있는 기술 분야는 어떤 분야입니까?
- 퇴사 후에 친구들을 만나거나 하는 것이 부담스러워졌는지?
- 협업하는 과제, 혼자하는 과제 중 어떤 것을 더 선호하는지? 그 이유는?
- 본인의 의견을 주장할 때 강하게 주장하는 편인가요?
- 만약 본인의 주장이 본인과 협업하는 사람(예를 들어 프론트 개발자, 기획자 등)이 받아들이지 못한다면 어떻게 해결하실 건가요?
- 입사 후에 저희 회사에서 어떤 일을 하고 싶으신가요? (무엇을 기대하고 계신가요?)
- 저희 회사 서비스 중 어떤 서비스가 추가되었는데, 여기에 또 다른 기능을 추가한다면 어떤 기능이 있을까요?
일반 기술 질문
- 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의 차이를 설명해주세요.
Kotlin 관련 질문
- Kotlin과 Java의 차이점과 kotlin은 어떤 장점이 있는지?
- Kotlin의 coroutine?
Javascript 관련 질문
- ES6 랑 ES5 차이를 설명해주세요.
- const 가 뭔가요?
- function() 이랑 arrow function이랑 차이가 뭔가요? 어떤 기준에서 각각 사용하셨나요?
손코딩 테스트
- 입력 문자열을 거꾸로 출력하는 코드를 짜주세요.
- Stack에서 계속해서 push/pop 되는 상황에서 O(1)로 최소값을 찾는 스택 구현
- Array에서 index와 값이 일치하는 index 찾기(정렬된 배열)
- 예시로 -10, -4, -3, -1, 0, 1, 4, 7, 10, 13, 15 이런식이면 7이 답
댓글남기기