[패스트캠퍼스]올인원패키지 기술면접 인강 솔직 후기

[패스트캠퍼스]올인원패키지 기술면접 인강 솔직 후기

패스트캠퍼스 올인원패키지 중 기술면접 완전 정복 강의를 듣고 요약 정리 및 후기를 작성해보았다.

후기

추천도(5점만점):⭐⭐
특별할 것없이 구글링만해봐도 나오는 내용만 하기때문에 초반에는 살짝 지루했다.
실제 모의면접 음성을 들으면서 조언하는 부분이 인상적이었다. 이부분이 없었다면 그냥 유투브의 기술면접 팁 영상들과 비슷한 느낌이다.




최근 기술 면접 형태: 손코딩 테스트

손코딩 테스트를 통해 확인하고자 하는 것은 크게 3가지이다.

  1. 커뮤니케이션이 되는가?
  2. 꼼꼼하게 작성하는가?
    • 예를 들어 데이터를 처리하시오 라는 애매모호한 문제를 출제했다면 그 데이터가 정수인지, 부동소수점은 있는지, 문자열인지 등을 확인하고 작성하는 지 확인
  3. Problem Solving Logic이 합리적인가?

그럼 손코딩 테스트는 어떻게 해결하면 좋을까? 아래 5단계를 따라하면 좋다.

  1. 문제 듣기
  2. 예제를 통해 문제 이해하기
  3. 무식하게 풀기
  4. 질문자와 커뮤니케이션을 통해 개선하기
  5. 마이너한 부분의 최적화
  6. 검토하기




자기소개질문 팁

채용자는 시간이 없다. 조직이 원하는 기능을 개발할 수 있는 지, 함께 일하는데 문제가 없는 지를 보는 질문이다.
성장과정, 성격을 중점을 둘 필요없고 지원동기에 중점을 두고 말하면 된다.
비전공자인 점을 먼저 얘기할 필요가 없다. 가장 중요한 점을 먼저 얘기해야한다.
즉 개발경험을 먼저 얘기해야한다.




프로젝트시 어려운 점과 극복방법

시간압박, 마감기한의 어려움보다는 기술적인 애로점을 만났고 스스로 익혀서 극복했다고 한 점을 말하는 것이 더 좋다.




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이란?




참고