본문으로 바로가기

코딩 면접 질문들 정리 - 제1편 OS, JVM

category 면접 2018.01.19 16:43

코딩 면접 질문들 정리


개발자가 경력으로 이직 하려면 혹은 신입도 마찬가지이고 코딩테스트를 본다. 유형은 위 짤 처럼 화이트보드에 해보라는데도 있고, A4용지에 문제가 있는데 나눠주고 풀라고 하는 곳도 있고 말로 해보라는 곳도 있고 등등 여러가지 유형이 있다.


이런걸 한번 연습을 해보고 가는게 좋을 것이다. 내가 그냥 갔다가 말이 잘 정리가 안되고 면접관들 머리 속에 그려지게끔 말을 해야 하는데 그러지 못했던 것 같다.


가봤던 회사들에서 백엔드 서버 개발자로 면접 등을 보면서 나왔던 질문들을 정리 해본다.


전화면접, 코딩 테스트, 실제 면접 볼 때 나왔던 질문들이고 회사는 Naver, 쿠팡, KTH, 빗썸 등 들어보면 알만한 회사들이었다.


1.pivotal(대각선이 고정인 행렬) 3x3, 4x4를 뒤집는 로직을 짜보세요 재귀를 써야함.


2.JAVA에서 Single ton패턴을 쓰는 이유를 말해보세요.


3.10칸짜리 배열로 스레드 세이프한 Queue를 만들어 보세요.


4.동기, 비동기에 대해 설명하고 장단점을 각각 설명 해보세요.


5.DB 클러스터링과 리플리케이션의 차이점에 대해 설명해보세요.

- 클러스터링은  DB서버를 다중화 하는 것이고 리플리케이션은 서버와 데이터를 같이 다중화 하는 것


6.Thread 가 3개 생성 되었을 때 t1, t2, t3의 순서가 보장 되는 코드를 짜 보세요.


7.Spring을 쓰는 이유


8.Spring에서 Single ton이란?


9.Spring DI, IoC에 대해 설명 해보세요.


10.Java8에서 Stream을 사용한 경우 발생 할 수 있는 문제점은?


11.Java에서 가비지 컬렉터가 너무 잘 작동 했을 때 이 문제를 진단하는 방법과 해결 하는 방법은?


12.Call by value, Call by reference에 대해 설명 해보세요.

- java는 call by reference이고 대체로 콜 바이 레퍼런스이다. a = 10; b = a; 라고 하면 b는 10이 들어가는게 아니고 a의 주소가 복사가 된다. 그래서 b를 수정하면 a에도 영향을 미치는게 call by reference


- call by value 는 a = 10; b = a; 했을 때 b = 10이 된다. b를 수정해도 a에 영향을 주지 않는다.


13.Process와 Thread의 차이점

java로 따지면 process는 .jar를 실행 하는 것이고 thread는 .jar내에서 실행 하는 것.


Process대신 Thread를 쓰는 이유는 Process는 다시 띄워야 하는데 Thread는 프로그램 안에서 해결이 되기 때문.


14.JVM 구조

- Method(Static) Area

class의 구조 정보가 들어간다.


- Stack Area

Method정보, 메소드 호출 시 사용하는 지역변수 데이터 등을 저장한다. {}가 끝나는 동안 유지된다.

JVM시작시 생성되고 프로그램이 종료될때까지 유지된다.


- Heap Area

new 를 한게 여기로 들어감 gc의 주요 대상이다


15.가비지 컬렉션

- gc를 하는 시점 

- 주요 대상은 heap 영역이다.


16.정렬, 재귀, 알고리즘의 시간 복잡도


17.지금까지 해본 프로젝트에 대해서 설명 해보세요.

- db에 데이터를 넣고 그것을 보내주는 기능을 만들었는데 서버는 뭘로 만들었고 클라이언트는 뭘로 만들었습니다.

사용자수는 어느정도 되었고 트래픽은 어느정도 였습니다.


18.협업을 할 때 일을 어떻게 나누었는지?

- 내가 설계를 하고 후임1 후임2에게 태스크로 어떤 작업을 할지 할당을 해주었다.


19.코드 리뷰는 어떻게 진행 했는지?

jira로 pull request를 내린다. 개발을 하기 전에 개발 방향을 먼저 회의 한다.


20.스트레스 테스트 해봤는지? 툴은 뭐 써봤는지? 결과는 어떻게 확인 하는지?


21.java8을 써보셨나요?


22.java7에서 8로 올라오면서 어떤게 달라졌나요?


23.java lambda를 써보셨나요?



기본적으로 물어보는건 지금까지 해봤던 프로젝트에서 직접 만들었던 시스템 아키텍쳐와 어려웠던점 문제를 어떻게 해결했는지 해결방법을 물어봄.


단답형으로 대답 해주면 되고 필요하면 추가 질문이 들어온다.


그리고 백엔드는 기본적으로 안정성이 굉장히 중요하기 때문에 그리고 장애가 나면 다른 부분에도 영향을 미치기 때문에 너무 발랄한 최신기술 등은 잘 안물어봄.

면접 들어오시는 분들도 나이대가 제법 있으신 분들이 들어오는 경향이 있다.


자바, 스프링을 아주 많이 사용함.


기술면접은 시간이 1시간 정도 보는데 1시간을 꽉꽉 채워서 내가 이야기를 많이 하면 통과 하는 것 같다. 모른다고 얘기 많이 하면 떨어지는 것 같음. 당연한거겠지만 ㅇㅇ



end.





댓글을 달아 주세요