[Interview/Review]02. Direa 2차 실무진 면접


 - 면접주제 : 간단한 게시판 구현

필자 포함 신입지원자 2명, 경력지원자 1명 대상으로 진행.

PC에는 Eclipse, Tomcat 7.0, Oracle sql developer, Oracle계정과 IP 등 구비되어 있었음.

제한시간은 10시부터 4시까지 점심시간 포함.

(물론 점심은 직원들이 사주셨음.)

게시판 주제는 따로 없었음. 검색이든 뭐든 자신이 하고 싶은 방식으로 구현하는것이

면접 주제였음. 진행은 B대리님께서 해주셨는데, 

기존에 구현했던 프로젝트를 참조해서 구현해도 되냐고 묻더니 

가능하지만 잘 설명해줘야 된다고 하셨음.


- 설계준비

사전에 비트에서 공부한 미니 프로젝트 03번과 06번을 준비했는데,

03번의 경우 00년도 초반의 방식으로서 

Spring framework나 다른 의존 Library가 존재하지 않고

EL, JSTL까지만 구현됨.

06번의 경우 Spring과 Mybatis가 적용됨.

두 프로젝트 모두 JSP로 보여주는 형식으로 된것임.

무슨 방식으로 할지 고민을 꽤나 했었음. 

03번으로 하면 옛날 방식이지만

MVC의 흐름을 일일이 보는 차원에서 리뷰하는 셈치고 내가 기본을 꿰뚫고 있다는 것을

어필할 것으로 생각됐었고, 06번을 사용하게 되면 내가 Spring framework를 잘 활용한다고

보여주는 차이가 있었음. 아무래도 06번 사용하면 심사할때 Spring에 관련된거

질문 받을 때 말 잘못할 것 같아서, 기본에 충실한다는 것을 보여주자는 차원에서 03번을

참조하기로 했음. 한참 진행하다가 점심먹고 옆에서 지켜보던 H과장님이 보시면서 

Library는 사용법만 잘알아도 충분하다고 격려해주셨음ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ


- 문제해결. 2가지의 trouble

초반에는 SQL Developer를 다뤄본적이 없어서 접속하는거나 테이블 생성하는데

시간을 조금 소비했음. 그러면서 무슨 주제로 보여줄까 고민하다 결정한 것은 users 테이블을

CRUD하기로 결정했음.


- 문제해결 01. DB접속

사실 지금까지는 trouble이라 볼 수 없었고, 

구현하면서 두 가지 문제중 하나는 DB접속하는데 문제가 있었음.

getConnection 메소드를 실행하는 도중 접속오류가 있었는데,

이상하게도 접속하는 시간이나 결과를 반환하는데 시간이 꽤나 길었는지

한 시간 조금 넘게 삽질한것 같음.

옆에서 진행하던 B대리님이 봐주시더니 자기 PC에서 접속도 되고 Query도 잘 되는데

아마 내 접속 정보에 문제가 있지 않는가 단서를 던져주셨음.

(추가로 Spring framework를 기능하는 의존 Library들을 보시더니

뭐 이리 많냐고 하셨음. 지우려고 했는데...)

Sql Developer에서 의존 Library를 추가하는 것을 설정하는 기능이 있었음.

그래서 ojdbc를 추가하더니 접속해서 Query까지 구현 성공함. 문제는 그 시간이 느렸음.


- 문제해결 02. VO값 전달문제

두번째 문제는 Control Layer와 View Layer에서 이루어지는 VO값 전달문제.

코드 분석하면서 해결은 할 수 있었는데 시간상 못한 문제. 단순히 VO전달하는데

어디서부터 원인인지 모르겠지만 Logic이 꼬여서 값하나가 쓰레기 값으로 전달됨.

아마 기존 프로젝트를 참조하고 수정하던 중 발생한 실수라 판단됨.


- 시간 종료

CRUD를 구현하는데 있어서 Create, Read, Update 까지는 구현했지만, 역시나 시간부족으로

완성은 못했음.


- 심사평

C부장과 L이사님께서 코드를 심사해주셨는데, 세 가지를 얘기해주셨음.


1. 게시판 만들라고 했지, 왜 사용자 정보를 보여주는걸 만들었니?

=> CRUD를 구현하는 차원에서 맥락은 비슷하니 간소화 하려고 했었다.

=> 하긴 뭐... 비슷하긴 하지. 그래도 이런건 물어봤어야 했는데...

(왠지 회사생활 하면 말 안듣고 내 마음대로 할 것 같은 뉘앙스를 뿜은것 같아서

조마조마했었음. 의도치 않았는데 다음에는 주의해야겠음.)


2. 테이블의 용도가 불명확하다. Data Type이나 명명한 것이나 좀더 구체적으로

했으면 좋았을텐데...

=> ...

(사실 이건 기존 프로젝트를 거의 복붙한거나 다름없어서 테이블에 대해서

고려할 겨를이 없었음.)


3. 그래도 코드는 깔끔하게 짜려고 노력했네.

(기존 프로젝트에서도 패키지마다 용도가 잘 구분되어 있어서 여기서 점수는 먹고

들어간 것 같음. 패키지 이름마저 같으면 안되니까 회사 이름으로 명명했음ㅋㅋㅋㅋㅋㅋ)


4. 오늘 느낀점은 어떤거 같아?

=> 기존에 공부한 것들을 리뷰할 수 있어서 좋았다.

(아쉬운게 06번을 썼으면 어떨까 싶었음. Spring에 대해 대답은 못 할지라도...)


- 마무리, 후기

생에 첫 면접을 이곳에서 보고 작년부터 입사를 위한 

전공능력 필기시험도 두 세번 치뤄봤지만 이렇게까지 길게 본적은 처음이었음.

다른 회사에서도 이런 방식으로 볼 것 같기도 하는데 값진 경험이었음.


- 최종합격

이런 우연이 있나 싶을정도로 상당히 당황했었음. 실무진 면접보고 4일이 지나서야

최종합격했다는 통보가 왔음. 다른 친구들 보면 서류를 수십개 넣고 면접도

수십번 보면서 겨우겨우 입사하고 고생한 흔적들을 자주 볼 수 있었는데,

내 경우는 이런 우연은 앞으로 없을 정도였음. 비트에서 추천받은것이라 할지라도...

절차상 3차면접까지 있는걸로 알고 있는데 생략된 것 같음. 


'Interview > Review' 카테고리의 다른 글

[Interview/Review]02. Direa 2차 실무진 면접  (0) 2016.07.06
[Interview/Review]01. Direa  (0) 2016.06.28

[Interview/Review]01. Direa

기본적으로 '자기소개', '10년후의 모습', '회사관련 궁금한점', '마지막 할 말'을 했음.

압박하는 분위기는 아님. 나름 긍정적. 면접관 2명. 이론관련 질문 없었음.

프로젝트 내용이랑 내가 맡은 분야 질문함. 거의 이력서에 있는 내용에서 물어봤음.



기억에 남는 질문

면접관1 : 요새 취업이 어렵니?

답변 : 보통 다들 준비하는데 1년은 걸린다고 한다.


면접관1 : 전문대나 4년제 학교에서나 비슷한 학과인데 방송쪽은 취업이 안되나봐?

(필자는 전문대 졸업하고 4년제로 편입했음.)

답변 : 내가 공부한 학부는 방송쪽이라기 보다 IT에 가깝다.

        커리큘럼은 컴퓨터학부와 동일하지만 디자인이나 철학을 공부하기도 한다.

면접관1 : 그럼 보통 그 학생들의 진로는 어떻게 되니?

답변 : 광고마케팅도 하고 그래픽스 프로그래밍으로 진학하기도 한다.

면접관1 : 너는 그러면 게임회사에 지원을 많이 했을텐데?

답변 : 수학도 같이 해야되는 부담감에 게임쪽은 하지 않았다.


면접관2 : 기술내용 보니까 git나 svn있는데 어떻게 했고 무엇을 느꼈니?

답변 : 프로젝트를 먼저 git에 등록하고 svn과 연결해서 git를 해제하였다.

        사용하면서 느낀것은 팀원들이 commit이나 update등

        어디까지 작업했는지 확인할 수 있어서 편했다.


면접관2 : 요즘 IT트렌드가 뭔지 좀 알고 있니?

답변 : 직접 사용해본적은 없지만 Spring대신에 Node.js를 사용하는 것은

        몇년전부터 있었고 프론트 분야에서 jquery도 많이 사용하지만

        React.js나 Angular.js, 그리고 아마존에서 제공하는 aws등 사용한다.


면접관2 : 자소서 내용중에 web을 공부할 것을 결심한게 좀 강한 표현인것 같은데

             그 외에는 안할건가봐?

답변 : 아니다. 그 당시에 결심한것이 시야가 좁았기 때문이었다. 이제는 내게 무슨

        과제가 오든 다 잘할 자신있다.


면접관1 : 니가 생각하는 개발 실력은 어느정도니?

답변 : 타 회사에서 치뤘던 시험같은데서 풀 수 있을정도이다.

면접관1 : 시험? 요즘 회사들 채용절차가 어떻게 되는데?

답변 : 서류를 제출하면 먼저 필기시험을 보고 면접을 본다.

면접관1 : 무슨 내용인데?

답변 : 학교에서 공부한것들을 위주로 낸다.


면접관1 : 너에게 하루라는 시간이 주어졌어. 어느정도 개발할 수 있겠니?

답변 : 간단한 게시판이나 로그인은 만들 것 같다.

면접관1 : 다들 뭐 그렇게 말하더라. 만약에 면접 통과되면 과제하나 줄게.

             뭐 다 못한다고 해서 불합격이니 그런건 없고 니 실력 체크하는거니까

             기다려봐.


면접관1 : 긴장을 잘 안하네? 면접 많이 다녀봤어?

(전에 채용박람회에서도 한번 듣던 질문. 생에 처음 면접은 이곳임.)

답변 : 사실 오면서 긴장 많이했는데, 내가 발표를 몇 번하다보니 긴장이 안되더라.

        그래서 발표를 준비하는 것처럼 리마인드를 계속했다.


질문내용1 : 학교에서 잠깐 배운 내용중에 핀테크는 사업아이디어를 중계해서

                투자하는 사이트도 있고 간편 결제도 있는데, 여기서 개발하는

                핀테크는 뭐야?

질문내용2 : 블로그 둘러보니까 여기 신입사원들은 무슨 과제가 항상 주어지는것

                같은데 보통 주제는 어떻게 돼?

'Interview > Review' 카테고리의 다른 글

[Interview/Review]02. Direa 2차 실무진 면접  (0) 2016.07.06
[Interview/Review]01. Direa  (0) 2016.06.28

[Interview/Preparation]02. Preparation - Project


 - 진행한 프로젝트가 무엇인지 논하라.

누구나 쉽게 작곡할 수 있도록 만든 프로젝트다.

작곡에서 가장 어려운 부분인 템포와 박자를 제거하고, 사용자가 지정한 시간내에 음계들을

입력하게 됨으로서 하나의 멜로디 블록이 완성된다.

완성된 블록들을 레고처럼 조합하게되면 곡이 만들어지는데 블록이나 곡들을 커뮤니티에서

공유하여 필요한 것들을 주고 받을 수 있다.


- 소리는 어떻게 구현했는가?

HTML5에서 지원하는 web audio api를 이용하였다. 처음 소리를 구현할 때는

oscillator에서 표현하는 진동으로 구현하였지만 소리의 간섭으로 인한 진동이나

전자음 같은 소리를 냈기 때문에 mp3파일을 소리내는 것으로 변환했다.


- 본인이 맡은 역할은 무엇인가?

jQuery UI에 있는 sortable이라는 기술을 이용하여 블록들을 끌어당겨 조합하고 재생하는

UI를 담당하였다.


  - 반응형 웹인가?

모바일 환경에서만 구현하였기 때문에 반응형으로 개발하지 않았다.


  - UI에서 어떻게 구현했는지 세부적으로 구술하라.

단순히 jQuery UI만으로는 세부적 역할이 제한되어 있었기 때문에 따로 제작된 플러그인을

찾아서 적용시켰다. 관련 문서를 꼼꼼히 읽고 내부적으로 어떻게 작성되어있는지 분석해서

나만의 방식으로 다시 재정의했었다.


  - 다른 분야는 개발했는가?

완성된 블록이나 곡들은 JSON의 형태로 담아 브라우저 로컬 저장소나 서버에있는

DB에 저장하는 로직을 구성했다.


 - 왜 두 가지로 저장하는 방식으로 구현했는가?

디바이스의 오프라인 상태에서도 사용자가 만든 블록이나 곡은 저장할 것을 계획했다.

그렇기 때문에 기본적인 로직은 브라우저 저장소에서 제공되는 indexexDB를 이용했고

온라인 상태에 로그인이 되어있다면 서버에 저장하는 로직으로 구성되어 있다.


  - 왜 indexedDB를 이용하였는가?

쿠키나 세션의 경우 휘발성이나 서버에서 저장받은 데이터를 관리하기 위한 용도가

필요했기 때문에 제외했고 key, value와 테이블 구조의 형태가 필요했기 때문에

local storage보다 indexedDB를 선호했다.


  - JSON이 뭔가? 그리고 어떻게 구성했되어있는가?

Javascript Object Notaion의 줄인말로 상호간의 key, value로 구성되는 데이터를 교환하는데 있어 

인간이나 기계에게 친숙하고도 가벼운 객체를 표현하는 기술이다.

블록이나 곡들을 저장하는데 있어 사용한 JSON의 구성요소는

시간과 음이고 저장 정보인 제목, 감정, 해시태그 그리고 저장한 사용자로 되어있다.

음의 경우 각 계이름마다 번호로 매겨져있고 이에 따른 음들을 재생시키는

로직으로 구성되어있다.


- 문제해결한 부분은 있었는가?

모든 페이지에서 보여지는 상단에 있는 바(Bar)는 공통적으로 개발해야 되는 모듈이기 때문에

페이지마다 구성하는 로직을 어떻게 할지 팀원들의 회의를 통해 정했었다.

이로 인하여 각 페이지에서 겹쳐지는 라이브러리들에 의하여 선택자들이

의도치 않는 결과가 나온적이 있다.

라이브러리가 링크되는 순서를 파악하고 그에 맞춰 선택자에 대한 스타일 속성을

따로 제작하여 재정의 하였다


- 미해결된 부분은 있었는가?

모바일 웹앱이기 때문에 기종간에 문제가 가장 컸다. 그중 하나는 터치의 민감도였는데

블록에 관한 이벤트 중에서 길게 누르면 선택창 그러니까 부트스트랩에서 지원하는

modal이 뜨는 것이 있었다. 그런데 갤럭시 기종에서는 어떤 우선순위에 문제가 있었는지

길게 누르려던 찰나에 블록이 옮겨지는 이벤트가 먼저 발생하게 된다.

터치하는 순간의 시간격차를 둘 것인지 아니면 click이벤트를 없앨 것인지 각종

방법을 유도했지만 역효과가 발생되었고 일정에 치우쳐 포기하게 됐다.


- 프로젝트에서 관여한 부분이 대부분 프론트 쪽인데

java를 지원하는 이유나 본인이 생각하는 개발자의 매력이

무엇인지?

교육센터에서 이론상으로 배운것은 백엔드다. 개인적으로 진행한 홈페이지 제작으로

백엔드의 흐름을 파악했다면 팀프로젝트에서 이 이론들을 적용하였고 UI를 구성하거나

그에 관한 기술등을 몸으로 습득한 것이 프론트엔드이다.

자바를 지원한 이유는 그 동안 훈련해온 알고리즘이나 백엔드를 돌이켜 볼 때,

성취감이 높았던 것은 프론트보다 높았다. 알고리즘을 훈련할 때 객체지향적인 방향으로

구성했었고 그 만큼의 몰입도가 높았기 때문에 java에 지원하게 된 것이다.


내가 생각하는 개발자의 매력은 전반적으로 보면

동료들과 머리를 짜내면서 문제해결하는 과정이 소중하다고 생각하고 있다.

또한 로직을 예시를 들지 않고 일반적으로, 구두로 표현하는 것이 상당히 어려운데 

이것을 어떻게 하면 쉽게 표현할 수 있을지를 상당히 고민하는 것도 

개발 수준이 향상된다는 것이 개발자의 궁극적인 매력이라 생각한다.

[Interview/Preparation]01. Preparation - Java


 - OOP에 대하여 논하라.

현실세계 혹은 온라인상에 존재하는 사물이나 사람 등의 매개체들을 컴퓨터 시스템으로 표현하는

프로그래밍 언어로서 절차지향의 C와는 달리 상속성, 다형성, 은닉성, 추상화가 있다.

상속성은 부모의 객체로부터 자식의 행동을 물려받아 재정의 하는 것이고

다형성은 한 객체로부터 각자만의 다양한 활용을 하는 것이다.

은닉성이란 외부로부터 속성과 행위를 노출되지 않도록 하는 원리이고

추상화는 여러 객체들의 공통적, 일반적인 성질을 하나로 뽑아내는 원리다.


- 객체지향이라는 특징을 제외한 Java의 특징을 C과 비교하라

자바의 가상머신은 플랫폼의 독립적인 특징이 있기 때문에 자바는 플랫폼의 독립적인

개발을 할 수 있는 특징이 있다.

Gabage Collection을 통해 인스턴스 제거 작업을 따로 할 필요가 없기 때문에

메모리 관리가 용이하다.


- interface와 abstract class의 차이는?

각 객체마다 사용하려는 키워드가 다르다는 첫번째 차이와 다중상속의 가능여부의 두번째 차이

그리고 구현된 method를 작성유무의 차이가 있다.


- thread와 process의 차이는?

운영체제에서 실행되는 독립적인 프로그램이 process라면 그 곳에서 독립적으로 실행되는 단위가 thread다.


 - call by reference, call by value의 차이는?

call by reference는 생성된 인스턴스의 주소값을 전달한다면 call by value는 해당 값을

복사해서 전달하게 된다.

  1. k9e4h 2016.06.28 11:14 신고

    call by reference랑 call by value의 저장위치도 많이 물어봐요!

+ Recent posts

티스토리 툴바