- Git과 SVN의 차이
- Git에서 새로운 브랜치를 만드는 명령어
- JPA, R2DBC 사용 경험
- Spring과 JDBC를 같이 쓴 거냐
- spring에서 제공하는 JDBC 템플릿으로 연동? 코드 작성?
- 최근 사용한 자바 버전
- 자바8에서 제공하는 Stream API
- 자바 컬렉션에서 어레이리스트가 담고 있는 요소들을 다른 객체들을 변환할 때 어떤 걸 사용했는지
- 메세지용 객체, 데이터 전달용 객체 class정의할 때 getter,setter 사용했는지?
- 불변객체 / setter를 제공하지 않는 객체
- 특정 클래스가 가지는 속성을 전부 final로 선언했을 때, 속성에 값을 할당할 때 어떤 방식으로 할당하는지.
- 멤버변수에 값을 할당하는 방식 ( Setter와 생성자 )
- 멤버변수를 final로 사용해봤는지
- Kotlin이 뭔지?
- Kotlin은 서버 개발용으로 사용한다.
- 스프링에서 제공하는 기능 중 가장 핵심적인 것
- 어노테이션을 붙이면 별도로 클래스에 생성자를 호출하지 않아도 다른 객체에 주입해서 사용할 수 있는 특징 - 의존성 주입?
- 어노테이션이 달린 객체들을 스프링이 읽어들여서 어노테이션이 붙어있는 bean 객체들을 어디에 저장? - application-context
- pom.xml의 역할 - 선언하는 것
- Spring과 Spring boot의 차이
- spring 없이 spring boot 쓸 수 있는지?
- import와 include 차이
- include를 사용해서 다른 jsp를 가져왔을 때 include한 페이지가 servlet으로 변환될 때 참조(동적) 형식이지, 정적으로 삽입이 되는 것인지?
- Servelet의 대표적인 메서드
- http 메서드 종류 - get, post, put
- Spring과 아파치톰캣 기반으로 어플리케이션 작성 시, controller annotation 쓸 때 각각의 controller에게 요청을 전달하는 Spring 객체 - dispatcher
- netD?
- Ajax를 지원하는 라이브러리 - jQuery
- jQuery로 ajax를 보낼 때 delete 메서드 사용해본 적 있는지?
- 예전에는 callback 방식을 많이 사용했지만 최근에는 비동기 지원으로 인해 promise를 많이 사용하는데 예외처리할 때 사용하는 function - catch
- promise는 체이닝방식인데 체이닝방식으로 안 쓰고 절차적으로 쓸 수 있는 프로미스를 wrapping해주는 키워드 - async, await
- jQuery를 사용해서 특정 버튼을 눌렀을 때, API 서버로부터 데이터를 가져올 때, 호출함수가 async로 선언되어 있을 코드를 어떻게 작성해야 하는가? - Event에 대한 콜백에 async를 붙인다.
- mysql 사용해봤는지? - mariaDB와 비슷
- 테이블에 인덱스 설정 시, 인덱스로 설정할 항목을 부여하는 기준
- Redis, S3, ObjectStorage 등 메모리 기반 스토리지 사용 경험
- Mybatis가 무엇인가? - SQLmapper
- sqlmapper - 쿼리문 작성 시, 맵퍼 뭐 쓸 건지? 선언된 맵퍼를 직접 구현하거나 자동으로 제공되는 맵퍼를 사용하거나
- 마이바티스 통해 실제 쿼리문 작성해봤는지?
Linux
- ShellScript 사용할 때 많이 사용하는 모듈? - CronTab, CronJob
Freemarker
Spring Batch
- 별도 어플리케이션으로 만들었는지, 이미 있는 어플리케이션에서 스프링 배치용 컴포넌트로 작성하였는지?
- 스케쥴 어노테이션 직접 사용해서 크론탭 신택스에 맞춰 스케줄링 하였는지?
협업 경험
받은 질문들을 적고 보니 고생했다 싶다.
기술면접 경험이 많지 않았던 나에게는 50분간의 기술면접이 굉장히 본격적으로 느껴졌다.
난이도가 아주 높았던 것은 아니지만, 아는 개념들도 말로 표현해내는 게 지난했고 현업에서 코딩을 잘하고 일을 잘하고 사용하던 기술들을 써먹는 것과는 별개로 이론과 명칭 등을 정확하게 아는 것은 또다른 분야구나라고 느꼈다.
한마디로 기초가 부족했던 것.
첫회사의 면접에서 '전공자들에 비해 CS지식이 부족할 텐데 그런 면을 어떻게 보충할 것이냐'라는 질문을 받은 적이 있어서 나름 노력한다고 공부를 해왔다고 생각했지만, 부족함을 여실히 느꼈다.
그럼에도 동시에 오히려 이게 발판이 될 수도 있다는 생각에 공부를 더 하자는 결론.
CS지식을 보충하기 위해서는 아무래도 전문서적을 읽는 것이 가장 중요할 것으로 보인다.
당분간 소설책은 내려놓고 IT 관련 책을 읽도록 하자.
면접이 끝나자마자, 아니 어쩌면 면접 도중에 어디선가 보고 필사해두었던 글들이 떠올랐다.
성공하려면 쪽팔림 겪는 단계는 필수이다.
수치심을 이겨내면 타인의 관용을 받게 된다. 이 때 내가 나에 대해 오만하게 생각햇던 부분은 고쳐지고, 지나치게 가혹하게 생각했던 부분은 누그러진다. 그렇게 나를 잔잔하게 바라볼 수 있게 되고 그만큼 세이브된 에너지를 행동 그 자체에 투자할 수 있게 되고, 그럼 좀 더 나은 삶을 살게 되는 것이다.
부족한 나를 참을 수 있다면 우리는 새로운 세상에서 얼마든지 헤엄칠 수 있다.
자신을 좀 용서해주렴. 원래 넌 아무것도 아니란다.
아무도 너에게 관심이 없단다. 그러니까 아무거나 닥치는 대로 다 해보렴. 아무도 널 비웃지 않을 거란다. 세상은 넓고 넌 자유로워.
이렇게 지엽적인 질문을 받지 못했더라면 나는 또 쉬운 길을 찾아 택했겠지.
더 나은 나를 만들어주는 발판이 되어 감사하다.