3년을 꽉 채운 4년차가 된 나는 이직을 결심했다! 

 

 

이력서 작성을 위한 준비! 

우선 쉬는 동안 간단한 토이프로젝트를 구축해 올려보았다.

기능은 게시글, 댓글, 대댓글, 좋아요, 신고하기 등등~! 

기본적인 커뮤니티의 기능을 갖춘 프로젝트를 구축! 

 

허접하지만 화면설계서까지 그려보았다 ㅎㅎ 

 

여기까지가 면접 전 준비 과정이었고  ~ 

 

총 8군데? 정도의 기업에 기술 면접을 다니기 시작했다. 

 

최종적으로 결과는 1곳을 제외한 모든 곳에서 기술 면접 합격을 받았다!! > < 

 

모두가 기쁜 이직을 준비하기 위해 내가 받았던 질문들을 정리해 공유해본다. 

 

 

우선 어딜가나 처음엔 자기소개로 시작한다. 

 

- 가장 최근에 경험했던 프로젝트와 본인에 대해 간단한게 자기소개 부탁드려요. 

 

 

JAVA 관련 

- 객체지향프로그래밍이란 ? 

- JVM의 영역에 대해 설명할 수 있나요? - 이부분에서 3개의 영역(메소드, 스택, 힙)에 대해 설명했음

- JVM 영역에 대해 조금 더 깊은 설명 가능하신가요?

- 인터페이스와 추상클래스의 차이점은 무엇이라고 생각하나요? 

- Static에 대해 설명해주세요 

- Thread 데드락이란 무엇인지 설명해주세요. 

- Thread 사용했던 경험과 문제가 발생했을때 해결했던 경험을 들려주세요. 

- 자바의 특징과 특징별 세부 내용도 설명해주세요.

- 접근제한자에 대한 설명과 실제로 어떤 상황에 사용했는지, 그 차이점은 어떤게 있는지 이야기해주세요. 

- private을 사용한 생성자에 대해 들어보셨나요?

  사용했다면 경험을, 사용해보지 않았다면 어떤 상황에 사용될지 이야기해주세요. 

- 일반적인 배열과 컬렉션타입의 List는 어떤 차이점이 있는지 설명해주세요.

- ArrayList와 LinkedList를 차이점과 구조를 설명해주세요.

- List<String> a = new ArrayList<>();  ==> 왜 선언할때 ArrayList가 아닌 List로 받았다고 생각하시나요?

- (컴파일에 전혀 문제가 없는 코드를 보여주며 ) 10개 이상의 문제가 될만한 포인트가 있는데 어디인지 리뷰해주세요

 ( Exception, String Pool, Collection별 차이에 대해 이해하고 있는지 정도의 코드였음) 

- Stack과 Queue에 대해 설명해주세요 그리고 사용했던 예시도 알려주세요.

- Stream에 대해 설명해주세요, 사용 경험도 이야기해주세요.

- process와 thread 차이점에 설명해주세요.

- 동기화란 무엇인가요? 설명과 사용예시를 들려주세요. 

- 동기화에서 발생될 수 있는 문제는 어떤게 있고 그문제는 어떻게 처리되어야할까요?

- POJO에 대해 설명해주세요. 

 

 

 

## 코딩 테스트 (대부분의 문제는 코드를 떠나서도 영어로 되어있다. 문제, 지문 등등 ..)  ##

 

* 시험지 형태의 문제 

- String Pool에 대한 이해도 테스트

  ( ==, equal() 함수를 이용해 문자열 비교, 커스터마이징된 equal()함수를 보고 출력 결과 작성하기)

 

- Static과 생성자에 문자열을 붙이도록 코드해두고 객체를 생성하여 어떤 결과가 나오는지 작성하기

 

- 코드를 보고 어떤 Exception이 발생하게 될지 예측하며 Exception 처리 방법을 이야기해보세요.

 

- 코드를 보여주며 여기서 발생될 문제를 찾고 해결방안을 제시하시오. 

 

- 주어진 수가 홀수인경우 +1 짝수일 경우 /2 를 하는 함수를 제공,

  두 개의 숫자 A, B를 보여주며 해당 함수를 몇번 돌렸을때 숫자 A가 B값이 되는지 물어보는 문제 

 

-  돌려 물어보는 문제도 있었다. 

예) 

톰은 에반이 자신의 연락처를 정확하게 알고 있는지 확인하고 싶었다.

톰은 에반과 직접적으로 대화할 수 없다. 

샘은 톰과 에반 사이에 전달자 역할을 해주는 인물이며 카드에 내용을 확인할 수 있다. 

샘은 연락처를 알아서는 안된다.

 

어떻게하면 톰은 샘 몰래 에반에게 연락처를 전달할 수 있을까? 

(답을 모르겠다면 이 문제의 의도를 파악해보세요.) 

 

 

* 코드를 직접 작성해 풀었던 문제 

- 비트 연산 문제 

- 재귀함수 구현 

- 문자열 뒤집기 (stack을 사용하지 않고 다른 방법들을 이용하기)

- 중복 문자열 검색 

- 중복되지 않은 문자열 검색 

- 주어진 숫자들 중 가장 큰 차이가 나는 숫자구하기

 

예) 제시 - 1257893  

0. 숫자 정렬 ::: 1235789

1 -> 2  == 차이 1 

2 -> 3  == 차이 1 

3 -> 5  == 차이 2

5 -> 7 == 차이 2

7 -> 8  == 차이 1 

8 -> 9  == 차이 1 

 

결과 : return 2 ; 

 

 

 

 

Spring 

- 사용했던 Spring 버전은 어떤거였나요?

- AOP에 대해 설명해주세요

- DI에 대해 설명해주세요 

- bean에 대해 설명해주세요.

- Filter와 Interceptor에 대해 설명해주고, 실행 순서를 알려주세요.

- Filter와 Interceptor의 차이점에 대해 설명하세요.

- Controller에서 Service를 사용할 때 인터페이스를 거쳐서 서비스를 구현하는데,

  이런 과정이 꼭 필요하다고 생각하나요 ?

  인터페이스를 거치치 않고 바로 서비스를 콜하면 더 낫지 않을까요? 의견을 들려주세요.

- 요즘 Spring에서 밀고있는 추세는 어떤게 있는지 알고 계신가요?

- Spring bean은 어떤 패턴으로 작성되나요?

- Spring bean은 무조건 싱글톤인가요? 아니라면 아닌 경우를 본적이 있는지요?

- Security 설정을 경험해 본적이 있나요? 사용했던 이야기를 들려주세요.

- Framework 생성부터 시작하시나요? 어떤 식으로 작업했는지 프로세스를 알려주세요. 

- Spring 의 장점이 어떤게 있다고 생각하시나요?

- Srping 의 단점은 어떤게 있다고 생각하시나요?

- VO, DAO 왜 사용한다고 생각하시나요? 

 

 

 

기타 

- 알고있는 디자인 패턴에 대해 알려주세요, 

- 싱글톤이라는게 어떤건지 자세히 설명 부탁드려요. 어떤 프로젝트에서 어떻게 사용했나요?

- 팩토리패턴이라고 들어보셨나요? 있다면 간결하게 코드 작성 부탁드립니다.

  ( 문법이 틀리는건 상관없으니 패턴을 볼수 있도록 간단하게 작성 부탁드려요)

- Rest API에 대해 설명해주세요. 

- Rest API 구축해본 경험이 있나요? 있다면 설명해주세요.

- 복잡한 형태의 프로세스를 구현해야한다고 할때 어떤식으로 시작하고 진행하는지 본인의 작업 방식을 설명해주세요.

- 객체지향 5대 원리 SOLID 라고 들어보셨나요? 설명 부탁드려요,

  들어보지 못했다면 약자를 가지고 유추해서 이야기해주세요. 

- 암호화 방식은 여러개가 있는데 혹시 설명 가능하신가요? 언제 사용하셨나요?

- 대칭키, 공개키, 해쉬 여러개의 방식이 있는데 각각의 특징과 장단점에 대해 설명해주세요.

- 관심있는 신기술이 있나요?

- 어떤 개발자가 되고 싶으신가요?

- 앞으로 미래를 위해 어떤 계획을 갖고 계신가요?

- was와 webservice 의 차이점에 대해 설명해주세요. 

- 개발자로서의 본인의 장점을 이야기해주세요.

 

 

OS 

- 리눅스를 사용해본 경험이 있나요?

- 웹서버 관리는 어떤식으로 하셨나요? 

- 리눅스는 어떤 종류를 사용하셨나요?

- kill 명령어에 대해 설명해주세요, 사용했던 경험도 이야기해주세요. 

- 600 권한은 어떤 권한인지 설명해주세요. 

- 로그관리는 어떻게 했나요? 

 

 

 

Database 

- 사용해본 DB에 대해 설명해주세요.

- Index에 대해 설명 부탁드려요. 왜 사용하는지도 함께 설명해주세요.

- Index을 설정할 때 어떤 점을 고려해야한다고 생각하시나요?

- where 절에 Index 사용이 가능한가요 ? 

- 반드시 index가 where 절에 들어가야한다고 생각하시나요?

- index 사용에 주의해야하는 경우에 대해 설명해주세요

- index가 사용되었는지 안되었는지 어떻게 알 수 있나요?

- 쿼리를 직접 작성하거나 쿼리 튜닝 경험이 있으신가요?

- 가장 많이 했던 테이블 Join이 있다면 몇개의 테이블 정도를 사용했나요?

- 회원관리 프로세스를 구현한다고 했을때 어떻게 테이블 구조를 생성할지 이야기해주세요.

- 본인이 설계했던 DB 구조에 대해 설명해주세요.

- 사용했던 엔티티는 몇개나 되었나요?

- Erd는 어떤 프로그램을 사용했나요? 어떤식으로 그리는지 알려주세요. 

- isolation level에 대해 설명해주세요. 

- 데이터를 관리할때 암호화 한다던지 본인이 데이터를 보호하기 위해 사용했던 기술이나 방식에 대해 이야기해주세요.

 

 

지난 프로젝트 경험 

- 본인의 포지션은 어떤 쪽이었나요?

- 업무 배분은 어떤 단위로 배분되었나요? backend, front 

- 본인은 여러개의 포지션중 어떤 포지션에 가장 관심이 있나요?

- 가장 난이도 있었던 프로젝트를 설명해주세요. 그 안에서의 본인의 역할과 기여도를 말해주세요.

- 트래픽의 발생으로 인한 이슈 경험이 있나요? 있다면 어떻게 대처했나요? 

- 본인의 기여도가 가장 높았던 프로젝트를 설명과 본인의 역할에 대해 이야기해주세요.

- 본인이 겪었던 가장 큰 이슈는 어떤게 있었나요? 상황과 해결했던 내용들을 들려주세요.  

- 로그관리는 어떤식으로 하셨나요?

- 에러가 발생한다면 어떤식으로 대처하셨나요? 에러가 났다고 생각하고 해결 순서를 알려주세요.

 

 

 

'Java' 카테고리의 다른 글

Client IP 가져오기  (0) 2020.08.19
File 정리  (0) 2020.08.18
JAVA 언어의 장단점  (0) 2020.07.13
JVM 그것이 알고싶다.  (0) 2020.07.12
String Pool 이란 무엇일까? String에 대한 고찰  (0) 2020.07.12

+ Recent posts