Job interview

개발자 면접 as an Interviewer #Part 2 : 기술면접

develo_j 2023. 7. 7. 00:32

 

# Part 2 : 기술 면접

전편에 이어 여기서부터 기술적인 질문을 본격적으로 합니다.

 

===============================
3. 기술 면접 질문
===============================

1) 모바일 질문
- android 개발 경험은? java or kotlin

 

- android 화면 전환 방법의 종류 & 차이점에 대해 간략히 말해주세요
  1-1)Fragment
  - 하나의 Activity에서 전환
  - Activity에 종속적
  - 가벼운 메모리
  - 복잡한 layout 관계
  - lifecycle 관리가 어려움(management 오류 위험)

  1-2)Activity Intent
  - 전체 view가 전환
  - lifecycle 관리가 쉬움
  - 잦은 호출은 메모리 부담 증가
  - 독립적 구동
  - 오류 가능성이 적음

 

--> 신입 지원자들은 대부분 모바일 개발 경험이 없기 때문에

위 질문은 주로 모바일 경험이 있는 경력자들에게 질문했던 내용입니다.

저도 모바일 경험이 별로 없으니 모바일 질문은 한 개로 끝...

ios 쪽(objective-c, swift)도 잘 모르니 pass ...

 

 


2) 프로그래밍 언어 & 웹 이해도 질문
  2-1)Javascript

  - 호이스트 개념?

 

  - 프로토타입 개념?


  - 스코프, 클로저 개념?


  - 자바스크립트 디버깅 경험? debugger; 디버깅.로깅 찍기, 디버깅.중단점 찍기


  - Ajax(Asynchronous JavaScript and XML) 는 왜 사용하게 되었나요?


  - Javascript 는 싱글스레드 언어인데 브라우저에서 멀티스레딩 기능이 되는 이유는?


  - JSON 이란 ?

  (Javascripts object notation) : { key: '111', value: '홍길순' }


  - 브라우저에서 F12를 누르면 나타나는 개발자 툴에서

  perfomance 탭의 기능을 사용해 보셨나요?
 

  - HTML DOM 구조

 

  - javascript 함수리터럴 개념이 뭔가요?

 

  - 함수형 프로그래밍이란 무엇인가요?


  - 타입스크립트는 배워보셨나요?

 

--> javascript 도 깊이 들어가면 배워야 할 것들이 꽤 있습니다.

javascript에 대한 이해도가 어느 정도인지 가늠하기 위한 질문들

이 질문들에 대한 답을 어느 정도 하는지 스스로 체크해 보세요~

 

  2-2)Java & WAS

  - 객체란?

  이름과 성질로 이루어진 클래스 파일

 

  - 객체지향 프로그램이란?


  - 캡슐화 & 추상화 & 상속 & 다형성 & Composition


  - 인터페이스란? 추상클래스란?

 

  - Map<String, Object> params = new Map<>(); 이 코드는 문제없이 작동하나요? 

  --> interface 객체가 클래스 처럼 new로 생성되는지 질문

 

  - 오버라이딩? 오버로딩 개념은?


  - 스레드의 개념?(stack)


  - 가비지 콜렉터란?(heap)

 

  - static키워드에 대해 설명해 주세요. 왜 static키워드를 쓰나요? 


  - 디버깅 해보았나?


  - java 직렬화 개념은?


  - 제너릭 프로그래밍 개념은?
  

  - WAS & Web Server 차이

 

  - jsp 코드같은 서블릿 쪽 코드는 F12 버튼을 눌러 브라우저에서 제공하는 개발자 툴로 볼 수 있을까요?

 

  - Load Balancing 개념에 대해 알고 있는 만큼 설명해 주세요.

 

 

  2-3)형상관리

  - 형상관리란 개념을 아시나요?

  형상관리는 어떻게 하시나요?

 

 

 

3. Database

  3-1)지금까지 사용해 본 데이터베이스 종류는?

 

  3-2)관계형 데이터베이스란?

 

  3-3)SQL이란? SQL Join 개념


  3-4)정규화란? 정규화는 왜 하는가? 역정규화란?


  3-5)ER 다이어그램이란?


  3-6)index 개념 및 활용정도
  - heaps 테이블 개념을 알고 있나요?
  - 클러스터드 & 넌 클러스터드 인덱스 각각의 구조와 차이점 (MS-SQL 기준)
  비클러스터형 인덱스 중에서 전체 데이터의 1 ~ 3 % 이상을 스캔하는 경우 
  SQL Server가 인덱스를 사용하지 않고 테이블 검색을 실시. 이것은 대략적인 추정치 상황에 따라서 다르다. 
  즉 비클러스터형 인덱스가 있어도 인덱스를 사용하지 않는다는 것
  만약 프로그램이 주로 전체 데이터의 1 ~ 3% 이상의 범위 데이터를 검색하는 경우에는 
  차라리 인덱스를 만들지 않는 것이 시스템 성능에 도움이 된다. 
  사용하지 않는 비클러스터형 인덱스는 데이터의 변경 작업(insert)이 발생했을 때,

  시스템의 성능을 나쁘게 만들 소지가 있음
  ex)1,000,000 줄 데이터에서 5% 를 검색할 경우 (50,000 줄)

  어떤 인덱스 타입을 사용하는 것이 좋을까요?

  3-7)view 를 사용할 때 얻을 수 있는 하드웨어적인 이점은?
  view를 사용하면 메모리 자원을 활용하기 때문에 
  하드디스크를 거치는 것보다 속도면에서 더 빠름.

 

 

 

대략 이 정도의 질문을 해보면

기초가 튼튼한 사람인지 아닌지는

어느 정도 구분 가능해 진다.

 

그리고 만약 연봉을 높게 부르는 경력자의 경우

이런 질문들에 어느 정도 대답하지 못하면

아직 배워야 할 것이 많은데 여기서는

그렇게까지 높게 대우해 줄 수 없다고 말하며

연봉을 낮게 제시한다.

 

일반적으로 1~2명의 개발자가

대부분의 일을 맡아 하는 업체의 특성 상

개발자가 독박을 쓰는 경우가 종종 생긴다.

'내가 없으면 이 회사 돌아가지 않지~'라고

우쭐해하는 사람들도 있지만

그것이 결국 부메랑이 되어

준비된 체력을 모두 소진시켜 버리는

상황이 오기도 한다.

 

회사는 이가 없으면

잇몸으로라도 살아내기 마련이다.

회사의 owner 는 한 사람이 없어도

사업을 어떤 형태로든 계속 이어가기를 바라고

또 그렇게 이어간다.

 

몸 담은 회사 일에 지치거나

더 좋은 조건을 찾아서

그냥 퇴사하겠다고 통보하고 나가도

법적으로 아무 문제없지만

(헌법 제15조

모든 국민은 직업선택의 자유를 가진다

--> 참고로 이 법을 몰라서

협박하는 무식한 CEO 도 가끔 발견할 수 있다.)

가능하다면

자신을 대체할 수 있는

다음 사람들을 세우는

팀장 역할을 해 보기를 추천한다.

 

일도 하면서 사람을 세우는 일은

만만치 않고 더 피곤할 수도 있다.

하지만 후배들을 가르치려면

자신도 제대로 배워야하고

또 알려주기 위해 스스로 정리하면서

자신의 머릿속에 정리도 더 꼼꼼하게 할 수 있다.

잘 배워서 남을 주는 역할을 잘하면

자신의 실력도 함께 올라간다.

 

면접을 보고 사람을 뽑고

함께 일하면서 생각해 본 것은

다음 사람을 세우는 팀장 역할을

해 본 것이 나에게 도움이 되었다.

나의 실력 또한

함께 깊어지고

함께 넓어져 가는 것을 느꼈다.

 

글을 마무리 하면서

부족한 나와

함께 일해준 후배 동료들에게

감사한다.

 

다들 고생 많아요~!