[바미] 백엔드 개발자로 이직하며 접했던 면접 질문들
안녕하세요. 3년차 백엔드 포지션 개발자로 이직하며 접했던 면접 질문들을 공유합니다.
저는 Node.js, Go를 사용하는 회사를 주로 지원했기 때문에 Spring개발과 관련된 질문은 없다는 점 양해 바랍니다.
많은 도움이 되셨길 바랍니다.
백엔드 관련
REST API에 대해 설명해주시고, REST API의 장, 단점을 말씀해주세요
REST API의 메소드들을 아시는대로 말씀해주세요.
Redis를 사용하셨는데 Redis의 기능들 설명해주세요.
MySQL에서 트랜잭션 락에 대해 말씀해주세요.
Kafka의 구성요소가 무엇인지 말씀해주시고, 그 구성요소들을 설명해주세요.
Node.js의 장, 단점에 대해 말씀해주세요.
Node.js의 실행 구조에 대해 말씀해주세요.
Go 언어의 가비지 컬렉터는 어디서 동작하는 지 말씀해주세요.
HTTP response status codes에 대해 말씀해주시고, 어떤 코드인지도 말씀해주세요.
DB Deadlock 원인을 말씀해주시고, 어떻게 해결해야 하는지 말씀해주세요.
Deadlock에 대해 말씀해주세요.
DB에서 Join을 사용했을 때 on과 where의 차이에 대해 말씀해주세요.
Websocket과 Socket.io의 차이에 대해 말씀해주세요.
API가 무엇인가요?
Node.js에선 sync, await, async가 있습니다. 각각 어떤 것이고, 어떤 상황에서 사용하는 지 말씀해주세요.
MySQL 인덱스에 대해 말씀해주시고, 인덱스의 장,단점에 대해서도 설명해주세요.
프론드엔드와는 무엇으로 통신하셨나요?
자신이 프로젝트에서 사용했던 통신방식(Ajax, Axios)을 말씀해주시면 됩니다.
AWS를 다뤄보셨나요? AWS의 기능들 설명해주시겠어요?
사용하셨던 AWS 기능들을 말씀하시면 됩니다.
개발 이론
DNS가 무엇인가요?
서버 사이드 렌더링, 클라이언트 사이드 렌더링에 대해 말씀해주세요.
멀티 쓰레드, 멀티 프로세스에 대해 말씀해주세요.
스레드와 프로세스의 차이는 무엇인가요?
쿠키와 세션의 차이에 대해 말씀해주세요.
클린 코드와 리팩토링의 차이점에 대해 말씀해주세요.
OSI 7계층 중에서 보안쪽과 관련된 부분은 어느 쪽인가요?
물리 계층 (Physical Layer)
보안 관련된 직접적인 기능은 없지만, 물리적 접근 제어와 관련된 보안 대책이 필요합니다. 예를 들어, 서버실의 접근을 통제하거나 케이블 도청을 방지하는 등의 물리적 보안이 포함됩니다.
데이터 링크 계층 (Data Link Layer)
MAC 주소 필터링, 스위치 포트 보안, VLAN 설정 등이 데이터 링크 계층에서 이루어지는 보안 관련 작업입니다.
네트워크 계층 (Network Layer):
IPsec와 같은 프로토콜을 통해 네트워크 계층에서 보안을 강화합니다. 라우터 설정을 통한 ACL(Access Control List) 등도 이 계층에서 이루어집니다.
전송 계층 (Transport Layer):
SSL/TLS 프로토콜을 통해 전송 계층에서 데이터의 기밀성과 무결성을 보장합니다. 포트 스캐닝 방지와 같은 보안 조치도 이 계층에서 다룹니다.
세션 계층 (Session Layer):
세션 계층에서는 세션의 설정, 유지, 종료 과정에서 보안 기능을 적용할 수 있습니다. 예를 들어, 세션 토큰을 통한 인증이 있습니다.
프레젠테이션 계층 (Presentation Layer):
데이터 암호화와 복호화, 데이터 압축 등의 기능을 통해 보안을 강화합니다. 이 계층에서 암호화 프로토콜이 사용됩니다.
응용 계층 (Application Layer):
HTTPS, SFTP 등 응용 계층 프로토콜에서 보안 기능을 직접 제공합니다. 사용자 인증, 데이터 암호화, 접근 제어 등의 보안 기능이 포함됩니다. 결론적으로, 네트워크 보안은 특정 계층에만 국한되지 않고, OSI 모델의 여러 계층에서 다양한 보안 기능과 대책을 적용하여 종합적으로 이루어집니다.
OSI 7계층 구성 요소들을 말씀해주세요.
물리 계층, 데이터 링크 계층, 네트워크 계층, 전송계층, 세션 계층, 표현 계층, 응용 계층을 말씀드렸습니다.
가비지 컬렉터에 대해 말씀해주세요
지금 Node 개발자로 지원해주셨는데 만약 다른언어 개발을 요구하면 어떻게 하실건가요?
본인의 생각을 자유롭게 표현하면 됩니다. 저의 경우 전 회사에서 너무 다양한 언어를 접하다보니 한, 두 가지언어의 깊은 전문성을 기르고 싶다 말씀드렸습니다. (실제로 경력 이직을 시도하기 위해 채용 시장을 보았을 때 한 언어를 깊게 쓴 사람을 뽑으려는 회사들이 많았습니다.)
백엔드 개발을 선택하신 이유가 있을까요?
자신이 왜 백엔드 개발자로 선택하셨는지 이유를 말씀해주시면 됩니다.
현재 다니시는 회사에서 진행하셨던 프로젝트들을 말씀해주세요.
경력의 경우 자신이 회사에서 진행했던 프로젝트들 중 자신이 맡았던 부분들을 나열하며 말씀해주시면 되고, 신입의 경우 졸업 프로젝트, 등에서 자신이 맡았던 부분들을 말씀해주시면 됩니다.IPC가 무엇인지 말씀해주세요.
IPC 중 알고 계시는 시그널 코드들에 대해 말씀해주세요.
공통(비개발)
퇴사/이직 사유는 어떻게 되시시나요? 그리고 우리 회사에 왜 지원하셨는지 말씀해주세요.
자신의 퇴사, 이직 사유와 지원동기에 대해 말씀해주시면 됩니다.
퇴사/이직사유와 지원 동기가 이어지게 말씀해 주시면 좋습니다.
가장 자신있는 개발언어가 무엇인가요? 그 이유도 말씀해주세요.
근거에 의한 이유를 말씀해주셔야 합니다.
저의 경우 회사에서 실제 A ~ Z까지 개발하며 실제 고객들이 사용하는 운영 페이지를 만든 경험과
토이프로젝트에서 개발한 경험들을 말씀드렸습니다.
프론트, 백엔드 개발을 해오셨는데 그 중에서 가장 자신있는 포지션은 어디인가요?
마찬가지로 근거에 의한 이유를 말씀해주셔야 합니다.
일하시면서 무엇 때문에 힘들었나요?
자신이 힘들었지만 그 일을 해결 or 극복했던 경험들을 말씀해주시면 좋습니다.
취미가 어떻게 되시나요?
자신의 취미를 말씀해주시면 됩니다.
직장 동료나 상사와의 갈등이 있었던 경험에 대해 말씀해주세요.
갈등 사례를 말씀하시되 갈등을 해결한 사례가 있는 것을 말씀해주시면 좋습니다.
어떤 동료와 일하고 싶으신가요?
자신이 원하는 동료를 말씀하시면 됩니다.
피하고 싶은 동료가 있다면 어떤 동료일까요?
마찬가지로 어떤 동료를 피하고 싶은지 말씀하시면 됩니다. 저의 경우 같이 일하고 싶은 동료의 반대되는 사람을 얘기했습니다.
저희는 단기간내에 빠르게 결과를 만들어내는 성격을 가진 회사입니다. 지원자님이 지금까지 하셨던 업무들과는 성격이 다른데 적응 하실 수 있으신가요?
저의 경우 전 회사가 서비스를 제공하는 회사였기 때문에 하나를 만들면 고도화 작업을 자연스레 하는 회사였고,
위의 질문을 했던 회사의 경우 에이전시 형태의 회사였기에 받은 질문이였습니다.
회사마다 개발하는 성향이 다르다는 것을 알아 거기에 맞출 수 있고, 서비스를 개발하다보면 단기간에 빠르게 결과를 만들어내야 하는 프로젝트가 있었기에 큰 문제가 없었다 말씀드렸습니다.
지원자님께서는 연봉, 사람, 거리, 커리어 중에 가장 중요도가 높은건 무엇인가요?
자신이 생각하는 중요도에 대해 말씀하시면 됩니다.
저는 성장에 대해 말씀드렸습니다. 그 때 당시 개인 성장이 퇴사, 이직사유였기 때문에 면접의 대답을 '성장'이라는 키워드 하나로 묶어 얘기하고 싶었기 때문이였습니다. 그러면서 그 성장에 필요한 커리어와 사람이 가장 중요하게 생각한다. 라고 말씀드렸습니다.
프로젝트마다 하나의 언어로만 하신게 아니라 다양한 언어로 개발하셨는데 다른 그 이유가 있을까요?
다양한 프로젝트를 진행했지만 다양한 언어로 개발하셨다면 듣게 되는 질문입니다. 현실은 위에서 시키니까 하는 거지만 상사의 의견과 내 의견은 어떠했는지 말씀드리고, 그 상황에서 가장 적합한 선택이 무엇이였는지 말씀드리면 됩니다. 여기서 핵심포인트는 '나는 위에서 시켜서 한게 아니라 이런 저런 의견을 냈고, 들었는데 이런 의견이 좋아서 쓴거다!' 라는 것을 말씀해주셔야 한다는 겁니다.도움이 되셨다면 공감버튼 꾸욱! 눌러주시면 감사하겠습니다 :)