그* 코딩테스트와 서류에 붙어 면접을 보게 되었다. 팀장님으로 보이는 시니어 한 분과 프린시플 레벨의 시니어 한 분이 들어오셨다. 굉장히 경직된 나를 보고는, 두 면접관님들이 분위기를 풀어주셔서 조금은 편하게 면접을 보았다! 면접에서는실제로 나의 이력서와 한 페이지 포트폴리오를 보고 내가 익숙해진 기술과 개념에서 질문이 나왔다. Java Spring으로 현업에서 일한 경력이 없어 물어볼 폭이 넓지 않았던 거 같고, 1년의 짧은 연구실 경력과 개인적으로 운영하는 서비스에 중심을 두고 전개 되었다. 그 후엔 내가 가진 기술 스택을 토대로 한 기술적인 사항에 대한 질문들이 들어왔다. 당신은 어떤 일을 해왔나요?1. 먼저 연구실에서 데이터 플랫폼 실험을 수행한 지 질문이 들어왔다. 문제 수행력 검증과 더불어 어떤 일을 경험했는지 물어보는 듯 했다.
이 부분에서는 내가 한 일을 솔직히 말하는 것이 중요하다 2. 개인적으로 운영하는 서비스 (Java Spring)에 대해서도 질문이 들어왔다. 난 이 부분을 정말 잘 준비해 갔어야 한다.
내가 처한 상황과 어떻게 문제를 해결했는지, 고민을 거쳐 기술 스택을 사용했는지 잘 대답하는 것이 핵심이다. 어떻게 이 질문을 잘 대답할 지 물어본다면.. 내가 실제로 그렇게 고민하면서 개발하면 된다. 3. 졸업 후 어떤 일들을 해왔는 지
기술 검증 들어갑니다먼저 Java Spring에 관한 질문이 처음으로 나왔다. 이러한 형태의 전체 Flow와 기술적 Detail을 물어보는 질문은, 백엔드 면접뿐만 아니라 모든 면접에 해당되는, 면접자의 수준을 측정하는 질문이라고 생각한다. Url으로 요청이 들어올 때부터 나갈 때까지 Java Spring 동작을 아는 범위에서 전부 설명해주세요. 내가 여기서 대답을 어느정도는 했지만, 추측하기로는 면접관님들이 만족하지 못하는 듯 했다. 먼저 내가 생각해보지 않았던 질문이라 답변의 포인트를 잘 잡지 못하고 횡설수설했던 탓도 있고, 워낙 방대하다보니 어느 수준에서 어떻게 대답해야할 지 갈피를 잡지 못했었다. 이 질문 이후에는 한 가지 꼬리 질문과 두 가지 추가 질문이 이어졌다.
이 후에는 DB에 관한 질문이 이어졌다. 첫 질문을 잘 대답하니 두번째로 쿼리 개선 경험을 물어보셨다.
그 이후에는 객체지향 패턴 중 하나인 싱글턴 패턴을 물어보셨고, 설명 중 class와 instance를 혼동해서 사용하는 모습에 추가 질문으로 이어졌다.
그리고 정말 기초 질문으로 마지막 검증!
피드백이 면접 어떻게 흘러가는건가. 이런 생각에 나라도 발전할 기회로 삼자..! 마무리 단계에서는 이런 생각에 이러한 질문은 던졌다. 선배 개발자 입장에서 제가 어떤 부분을 보완하면 채용 과정에서 더 매력적인 사람이 될 지 궁금합니다! 감사하게도 두 분 다 가장 어려운 질문이라고 너털 웃음을 지으시면서도 대답을 잘해주셨다. 프린시플 시니어분 개발자를 채용할 때, 세 가지를 주로 본다고 하셨다.
그런데 경력이 적거나 없는 경우에는 다양한 문제를 만나본 적이 없고, 확연한 협업 기회도 적기 때문에 그나마 검증할 수 있는 학습능력에 주안점을 두고 면접을 진행한다고 설명해주셨다. 즉, 공부할 때 꼼꼼히 공부했는지 보는 것이다. 이는 면접시 답변이나 내가 해왔던 활동의 완성도, 그리고 프로젝트시에 다양한 고민들로 검증을 한다고 설명해주셨다. 그 전에는 공부할 때 꼼꼼히는 공부했고 프로젝트가 잘 수행 될 수 있게 공부를 해왔지만 명확한 기준이 없었다. 이 답변을 듣고 내가 보강해야 될 부분을 확연히 알 수 있었다. 팀장 포지션 시니어분 이력서와 깃허브가 가장 중요하다고 말씀해주셨다. 이력서의 경우에는 지원에 대한 성의가 나타나기 때문에, 열정이나 진심을 비추어 확인하고, 깃허브에서는 프로필과 각 프로젝트에서 사용한 언어와 프레임워크를 보고, 이제 나는 어떻게 할 것인가
[목차] 1. Java 2. Spring & Spring boot 3. DB 4. 웹 & 통신 5. 운영체제 6. 자료 구조 1. Java1. JVM이란 무엇인가?
2. OOP(Object Oriented Programming) 란?
3. GC(가 바지 콜렉터) 란?
4. 오버 라이딩과 오버 로딩은 무엇이며 어떤 차이점이 있나?
5. 리플렉션(Reflection) 이란?
6. 제네릭(Generics) 이란?
7. Java의 접근 제어자의 종류와 이에 대해 설명하세요.
8. 클래스와 객체는 무엇인가?
9. SOLID(객체 지향 5대 원칙)에 대해 설명하세요.
10. 인터페이스와 추상 클래스의 차이점에 대해 설명하세요.
11. 컬렉션 프레임워크(Java Collection Framework)에 대해 설명해주세요.
12. List와 Map의 차이점은?
13. 직렬화 란?
12. 정적(static) 이란?
13. Java는 멀티 스레드(Multi Thread) 환경인데 멀티스레드란 무엇인가?
14. 멀티 스레드(Multi Thread) 사용 이유는?
2. Spring & Spring boot1. Spring Framework의 특징과 쓰는 이유는?
2. Spring Boot 이란? (특징)
3. Spring MVC에 대해 설명해주세요.
4. Spring DI / IOC는 무엇이고, 어떻게 동작하는가?
5. Spring AOP란?
6. Spring Bean이란?
7. 스프링 컨테이너란?
8. Spirng Bean의 Scope에 대해 설명하시오.
9. Spring에서 CORS 에러를 해결하기 위한 방법은?
3. DB1. NoSQL 이랑 RDBMS의 특징과 차이점은? (비 관계형과 관계형의 차이점)
2. Join 문이란?
3. Primary Key, Foreign Key에 대해 설명하시오.
4. 정규화에 대해 설명하시오.
5. 정규화가 필요한 이유는?
6. 무결성이란?
7. 트랜잭션이란?
8. DB Connection Pool 이란?
4. 웹 & 통신1. HTTP란 무엇인가?
2. HTTP와 HTTPS의 차이점은?
3. HTTP 메서드에 대해 설명하세요. (REST API와 비슷함)
4. OSI 7 계층에 대해 설명하세요.
5. TCP와 UDP의 차이점에 대해 설명하세요.
6. 3 - way handshake 이란?
7. CORS(Cross Origin Resource Sharing) 이란?
8. Session(세션)과 Cookie(쿠키)의 차이점에 대해 설명해주세요.
5. 운영체제 6. 자료 구조 7. 기타 [참고 자료] https://velog.io/@hygoogi/%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91-%EC%A4%80%EB%B9%84%ED%95%98%EA%B8%B0#%EC%9B%B9%EA%B3%BC-%ED%86%B5%EC%8B%A0 기술면접 준비하기 기술면접 빡세게 준비하자 velog.io https://github.com/ksundong/backend-interview-question#%EB%A9%B4%EC%A0%91-%EA%BF%80%ED%8C%81 GitHub - ksundong/backend-interview-question: 백엔드 개발자로 입사를 준비하며 받았던 질문, 예상했던 질 백엔드 개발자로 입사를 준비하며 받았던 질문, 예상했던 질문, 인터넷 참고한 질문(CC BY-NC) - GitHub - ksundong/backend-interview-question: 백엔드 개발자로 입사를 준비하며 받았던 질문, 예상했던 질문, github.com |