[패스트캠퍼스]올인원패키지 기술면접 인강 솔직 후기
패스트캠퍼스 올인원패키지 중 기술면접 완전 정복 강의를 듣고 요약 정리 및 후기를 작성해보았다.
후기
추천도(5점만점):⭐⭐
특별할 것없이 구글링만해봐도 나오는 내용만 하기때문에 초반에는 살짝 지루했다.
실제 모의면접 음성을 들으면서 조언하는 부분이 인상적이었다. 이부분이 없었다면 그냥 유투브의 기술면접 팁 영상들과 비슷한 느낌이다.
최근 기술 면접 형태: 손코딩 테스트
손코딩 테스트를 통해 확인하고자 하는 것은 크게 3가지이다.
- 커뮤니케이션이 되는가?
- 꼼꼼하게 작성하는가?
- 예를 들어 데이터를 처리하시오 라는 애매모호한 문제를 출제했다면 그 데이터가 정수인지, 부동소수점은 있는지, 문자열인지 등을 확인하고 작성하는 지 확인
- Problem Solving Logic이 합리적인가?
그럼 손코딩 테스트는 어떻게 해결하면 좋을까? 아래 5단계를 따라하면 좋다.
- 문제 듣기
- 예제를 통해 문제 이해하기
- 무식하게 풀기
- 질문자와 커뮤니케이션을 통해 개선하기
- 마이너한 부분의 최적화
- 검토하기
자기소개질문 팁
채용자는 시간이 없다. 조직이 원하는 기능을 개발할 수 있는 지, 함께 일하는데 문제가 없는 지를 보는 질문이다.
성장과정, 성격을 중점을 둘 필요없고 지원동기
에 중점을 두고 말하면 된다.
비전공자인 점을 먼저 얘기할 필요가 없다. 가장 중요한 점을 먼저 얘기해야한다.
즉 개발경험을 먼저 얘기해야한다.
프로젝트시 어려운 점과 극복방법
시간압박, 마감기한의 어려움보다는 기술적인 애로점을 만났고 스스로 익혀서 극복했다고 한 점을 말하는 것이 더 좋다.
CS 기본지식
주요질문1: 프로세스와 스레드 차이
- 프로세스: 운영체제로부터 자원을 할당받아 실행
- 스레드: 프로세스로부터 자원을 할당받아 실행
추가로
하나의 프로세스 안에서 여러 스레드 생성 가능하며, 각 스레드별 개별 스택을 가지고 있고 프로세스의 전역 메모리 공간을 공유하며 프로그램을 실행한다. - 프로세스는 코드/데이터/스택/힙 메모리 영역을 기반으로 실행
- 스레드는 프로세스 안에서 개별적인 스택을 가지고 코드/데이터/힙 영역을 공유하며 실행
주요질문2: 스크립트 언어와 컴파일 언어 차이
- 스크립트언어: 파이썬, 루비, PHP등 컴파일 단계없이 실행 단계에서 한 줄씩 기계어로 번역 후 실행되므로 통상 컴파일 언어보다 실행이 느림
- 컴파일언어: C계열, JAVAE등 컴파일러를 통해 사전에 컴파일되어 기계어 상태되므로 실행이 빠름
주요질문3: 동기식과 비동기식 차이
- 동기식: 요청에 대한 응답을 기다린 후, 응답이 오면 다음 요청을 하는 방식
- 비동기식: 요청에 대한 응답을 기다리지않고, 다음 동작은 진행하는 방식
추가로 장단점을 설명하면 좋다. - 동기식
- 장점: 구성이 단순, 순서대로 실행가능
- 단점: 멀티태스킹 불가
- 비동기식
- 장점: 멀티태스킹 가능
- 단점: 일정 시간당 요청량이 많아질 경우 부하 발생 -> 이를 해결하기 위한 추가 처리 필요
주요질문4: DB에서 인덱스를 사용하는 이유와 장단점
- 인덱스: 데이터를 논리적으로 정렬해서 검색과 정렬 속도를 높이기 위해 사용
- 단점: 데이터 삽입 및 변경이 수시로 일어나면 매번 인덱스를 변경해야 하므로 성능 저하를 막기 위한 고려가 필요함
주요질문5: TCP와 UDP 차이점과 장단점
- UDP: 비연결형 프로토콜과 흐름제어, 오류제어를 하지않음 -> 송수신에 적은 데이터가 필요
- TCP: 연결혈 프로토콜로 흐름제어, 오류제어를 함 -> 데이터 송수신에 신뢰성을 가짐
TCP는 신뢰성있는 데이터 전송에서 사용 -> 로직이 들어가기에 상대적으로 느림
UDP는 유실이 조금 되어도 상관없는 데이터 전송에서 사용 -> 로직이 적게 들어가기때문에 상대적으로 빠름
더 자세한 내용은 TCP통신 vs UDP통신 차이점포스팅 참고
자바질문
주요질문1: JVM과 JAVA 프로그램 실행 과정을 설명해보세요
- JVM: Java Virtual Machine(자바 가상 머신)의 약자로, 자바 프로그램을 자바 API를 기반으로 실행하는 역할
- JAVA 프로그램 실행과정: 프로그램 실행하면 JVM이 OS로부터 필요한 메모리만큼 할당 받고 -> 자바 클래스파일을 실행한다.
주요질문2: Garbage Collection이 필요한 이유
java 프로그램은 메모리를 명시적으로 지정해서 해제하지 않기 때문에, Garbage Collection을 통해 필요없는 객체를 찾아 지우는 작업을 수행한다.
주요질문3: Overriding vs overloading
- overriding: 상속관계일때 사용. 상위 클래스가 가지고 있는 메서드를 하위 클래스가 재정의해서 사용
- 메서드 이름 및 파라미터수 동일
- overloading: 같은 이름의 메서드 여러개를 가지면서 매개변수의 유형과 개수가 다르도록 하는 기술
더 자세한 오버로딩과 오버라이딩은 차이가 있으니 용어에 주의하자 포스팅을 참고하면 된다.
주요질문4: Interface 와 Abstract
- Abstract: 추상클래스는 추상 메서드 1개이상을 가진 클래스
- 상속시 추상메서드를 반드시 구현하게 해야할 때 사용
- 단일 상속. 클래스끼리 다중 상속 안됨
- new로 객체 생성 안됨
- Interface: 상수와 메서드의 집합. implements 받은 곳에서 모두 구현을 강제함
- 인터페이스끼리 다중 상속 가능
주요질문5: 디자인패턴이 무엇인지 싱글톤에 대해 간단히 설명
공부했던 패턴보다 어떤 프로젝트를 할때 이러한 패턴을 사용해봤습니다라는 식으로 답변하는 것이 좋다.
- 디자인패턴: 공통적인 소프트웨어 코드 작성 문제를 해결하는데 도움이 될 수 있느 코드 패턴
- 싱글톤: 전체 프로그램에서 단 1개의 객체를 생성해서 공유할 수 있는 코드 패턴
운영체제 및 데이터베이스 주요 질문
아래 질문들은 스스로 찾아봐야하는 질문이다.
따라서 내가 찾은 답변들을 적어보려고 한다.
- deadlock의 개념 및 해결방법
- 뮤텍스와 세마포어의 차이점
- 가상메모리란?
- 컨텍스트 스위칭이란?
- 트랜잭션이란?
- RDBMS와 NoSQL 차이점
네트워크 주요 질문
아래 질문들은 스스로 찾아봐야하는 질문이다.
따라서 내가 찾은 답변들을 적어보려고 한다.
- OSI 7계층이란?
- HTTP와 HTTPS 차이점
- 쿠키와 세션의 차이점
- RESTfUl 개념
- TCP의 3-way-handShake와 4-way-handShake 차이점
자료구조와 알고리즘 주요 질문
아래 질문들은 스스로 찾아봐야하는 질문이다. 따라서 내가 찾은 답변들을 적어보려고 한다.
참곻로 자료구조와 알고리즘은 코딩테스트를 통해서 검증하는 경우가 더 많다.
- 배열과 링크드 리스트의 장단점에 대해 간략히 설명해주세요
- BST의 최악의 시간 복잡도와 최악의 시간이 걸리는 케이스에 대해 설명해주세요
- 해쉬 테이블에 대해 설명해주세요
- Fibonacci 공식을 recursive와 dynamic programming으로 구현시 차이점에 대해 설명해주세요.
- DFS와 BFS이란?