[면접] 면접리뷰

[면접/면접리뷰] IT개발자 실제 기술면접 리뷰#1 - (중소 / SI / ★ ★ ★ ☆ ☆ )

itkw87 2023. 12. 26. 17:40
반응형

  요즘 취업을 하기 위해서 여러곳을 면접을 다니고 있다. 지금이야 면접을 여러번 보다보니 어느 정도 나만의 면접 데이터가 쌓여서 어떤 종류의 질문들을 하는지 어느정도 예측이 가능해졌다. 물론 정확히 어떤 질문을 하는지 예상 가능한게 아니라 어떤 종류의 질문을 많이 하는지 정도를 알게되었다는 것이다. 처음 면접을 볼 때는 비전공자 출신이다보니 어떻게 예상질문을 뽑아서 대비하고 답변을 준비해야하는지 도무지 알길이 없어 막막하였다.

 

  따라서 지금까지 본 면접을 바탕으로 나 자신에게 피드백을 할겸 처음 면접보는 이들에게 작은 도움이 됬으면 좋겠다는 마음에서 필자가 지금까지 실제 면접을 본 후기를 회사규모와 업종 그리고 필자가 체감한 난이도(주관적일 수 있음) 별로 구분하여 실제 면접시 받았던 질문과 해당 질문에 대한 답변을 공유하고자 한다.

 

  참고로 면접 질문에 대한 답변은 필자가 대답한 답변에 좀더 자세한 설명을 덧붙였다.(없을 수 도 있지만 좀 더 자세한 설명을 필요로 하는 사람들이 있을 수 있을까봐) 그러나, 실제 면접시에는 요약해서 말하는 것을 추천한다. 실제로 경험한 바에 의하면 면접관들이 질문에 대합 답변을 구구절절 길게 하는 것을 좋아하지 않는 것 같았다. 핵심 키워드들만 갖춰서 간결한 문장구성과 팩트 위주로 말했을 때 좋은 반응이 나왔다.

 

  어차피 설명이 부족하다든가 면접자가 해당 질문에 대해 좀 알고 있는 거 같은데 얼마나 알고 싶나 궁금해지면 면접관분들이 해당 내용에 대해 좀 더 깊게 질문하신다. 따라서, 괜히 말을 길게 흐려서 꼬투리 잡히는 것보다 확실히 아는 내용들을 간결하게 답변을 끝내는 것이 좋을거 같다는게 필자의 생각이다.   

 

 

 


 

 

 

#1. 기술면접 질문 리뷰

규모 : 중소기업 

업종 : SI(System Integration)

난이도 : ★ ★ ★ ☆ ☆ (중)

 

총평

첫번째로 면접 리뷰를 할 회사는 기업 규모 30명 내외의 중소기업으로 SI업종의 파견업무가 주 업무인 회사였다. 필자가 체감한 난이도는 그렇게 어렵다고 생각되지 않는 수준의 난이도 였다. 

 

 

실제 면접 질문과 답변

 Q1. 자바가 객체지향 언어인 이유는?

자바는 객체지향 언어의 주요 원칙인 캡슐화, 상속, 다형성을 전부 지원하는 언어이기 때문입니다. 첫째, 캡슐화를 통해 데이터와 메소드를 하나의 '클래스' 단위로 묶어서 사용합니다. 이를 통해 데이터를 보호하고 코드 재사용성을 높일 수 있습니다. 둘째, 상속을 통해 기존 클래스의 필드와 메소드를 새로운 클래스에서 재사용하거나 확장할 수 있습니다. 이를 통해 중복 코드를 줄이고 프로그램의 유지 보수를 용이하게 할 수 있습니다. 셋째, 다형성을 통해 하나의 참조 변수로 여러 타입의 객체를 참조할 수 있습니다. 이를 통해 코드의 유연성을 높이고 가독성을 향상시킬 수 있습니다. 이러한 객체지향 언어의 주요 원칙들을 갖췄기 때문에 자바를 객체지향 언어라고 생각합니다.

 

 

Q2. MyBatis의 단점은?

MyBatis의 가장 큰 단점은  SQL문을 개발자가 직접 작성해야 한다는 것 입니다. 이는 복잡한 쿼리를 작성할 때 유리할 수 있지만, JPA와 같은 ORM을 사용할 때와는 달리 비교적 까다로운 XML 문법에 맞춰 SQL문을 일일히 직접 작성하고 관리해야 하기 때문에 생산성이 떨어질 수 있습니다.

 

 

Q3. Servlet과 JSP 는 무엇인가?

서블릿과 JSP는 둘다 자바를 이용한 서버 측 웹 기술로 클라이언트의 요청에 따라 동적인 웹 페이지를 생성하고 그 결과를 클라이언트에게 전송하는 역할을 합니다. Servlet이라는 단어를 직역하면 '작은 서버' 혹은 '서버의 작은 조각' 이라는 의미를 가지고 있습니다. 즉, 서블릿은 웹 서버 내에서 동작하며 클라이언트의 특정 요청에 대해 동적인 처리를 수행하는 모듈을 의미합니다. 반면 JSP는 HTML 코드 내에 자바 코드를 삽입하여 웹 페이지를 생성하는 기술을 의미합니다. JSP는 주로 웹 페이지의 뷰(View)를 생성하는데 사용됩니다. JSP는 서블릿에 비해 코드 작성이 간편하여 뷰 생성 및 디자인 변경이 용이하다는 장점이 있습니다. 이러한 서블릿과 JSP는 보통은 MVC(Model View Controller) 패턴을 이용하여 둘을 적절히 조합하여 사용합니다. 이 때 서블릿은 주로 컨트롤러(Controller)의 역할을, JSP는 뷰(View)의 역할을 수행하게 됩니다. 이렇게 함으로써 서블릿과 JSP 각 기술의 장점을 극대화하고 단점을 보완하여 사용할 수 있습니다.

 

 

Q4. 정규화란? 제1, 2, 3 정규화를 설명해봐라

정규화란 데이터 베이스의 성능 향상과 데이터의 무결성(삽입, 갱신, 삭제 이상을 방지) 유하기 위해 테이블을 분리 시키는 과정을 의미합니다.

 

제1 정규화 (1NF)모든 컬럼(도메인)이 원자값(더 이상 분해할 수 없는 값)을 갖도록 하는 과정입니다. 예를 들어 회원 테이블의 취미 컬럼의 값이 낚시, 축구 등으로 원자값이 아니라고 가정할 때, 해당 취미 컬럼을 별도 테이블로 분리하는 제 1정규화 과정을 거쳐야 합니다.

 

제2 정규화 (2NF)는 제1 정규화를 만족하면서 부분 함수 종속을 제거하고 모든 컬럼이 기본키에 완전 함수 종속되도록하는 과정입니다. 완전 함수 종속은 각 컬럼의 여러 값들을 기본키로만 식별할 수 있는 경우를 말합니다. 부분 함수 종속은 기본키가 아닌 다른 컬럼으로 또다른 컬럼의 값들을 식별할 수 있는 경우 혹은 기본키가 여러 컬럼으로 구성된 복합키일 경우 복합키의 모두가 아닌 일부분만으로도 값을 식별할 수 있는 컬럼이 있을 경우를 의미합니다. 

 

제3 정규화 (3NF)는 제2 정규화를 만족하면서 이행적 함수 종속을 제거하는 과정을 의미합니다. 이행적 함수 종속이란X, Y, Z 라는 컬럼이 있을 때  X로 Y를 알 수 있고 Y로 Z를 알 수 있을 때, X로 Z을 알 수 있는 경우를 의미합니다. 예를 들어, '학생'이라는 테이블에서 '학번', '학과명', '학과장'이라는 컬럼이 있다고 가정할 때  '학번' → '학과명' 을 알 수 있고, '학과명' → '학과장' 을 알 수 있으면,  '학번'을 통해 간접적으로 '학과장'을 알 수 있게 되는 것을 의미합니다. 이러한 이행적 함수 종속이 발생하는 경우 이를 해결하기 위해 제3정규화 과정에서 '학과명'과 '학과장'을 별도의 테이블로 분리해야 합니다. 

반응형