FLO 면접

1시간 코딩테스트, 1시간 면접 순으로 진행된다. 먼저, 주어진 코딩테스트 문제는 단순한 REST API를 만드는 것인데, 내부적인 로직도

Q) System.out.println() 를 쓰셨는데, 좀 더 현대적인 출력 방법이 없나요? A) 실제 서비스를 할 때는 로거를 사용해서 출력합니다.

Q) ArrayList와 LinkedList가 있을텐데 두 개의 차이점이 뭐죠? 둘 중에 어떤게 중간 지점 삽입에 유리한가요? A) LinkedList는 링크만 끊고 들어가면 되고, ArrayList는 모든 요소의 인덱스를 당겨주어야 하므로 LinkedList가 유리합니다.

Q) 컨트롤러에 모든 로직을 구현한 것은 시간관계상 그렇게 한 것인가요?

Q) 해시맵을 사용하셨는데, 해시맵과 해시테이블의 차이가 무엇인가요?

Q) Race Condition 해결 방안은 무엇인가요?

Q) synchronized를 사용하면 어떻게 동작하나요? 어디에 붙일 수 있죠?

Q) Concurrent 자료구조는 왜 사용하나요? synchronized를 사용하는 것과 어떤 차이가 있죠?

Q) RESTful API

Q) Map<String, Integer>로 선언하셨는데, 여기에 Integer인데 int 타입을 넣을 수 있나요? 가능하다면 어떤 일이 발생하나요?

Q) 제네릭에 대해서 아시나요?

Q) 리플렉션이 무엇인가요?

Q) 오토박싱이 많으면 성능에 지장이 있는게 아닌가요?

Q) AUTO_INCREMENTED 라는 공유변수를 두셨는데, 동시성 문제가 발생하지 않나요? 어떻게 해결할까요?

Q) String이 아니라 객체로 받는게 좋을까요? 그러려면 어떻게 해야할까요?

Q) 이펙티브 자바 보셨다니간 빌더 패턴이 무엇인가요? 왜 쓰나요?

Q) SOLID 원칙 한 가지만 간단히 설명해주세요.

Q) 맵에 일일이 넣지 않고 마지막 조회하는 시점에 한 번에 넣어도 될거같은데 어떻게 생각하시나요?

Q) 스프링을 사용하는 장점은 무엇인가요?

Q) 계층 구조를 사용하는 이유가 무엇인가요?

Q) @RestController

Q) @PathVariable

Q) @RequestBody