기본 소양
개발 실력
- 컴퓨터 과학의 기초와 알고리즘, 자료구조 등의 프로그래밍 기초 개념을 충분히 설명할 수 있나요?
- 프로젝트에서 자신이 담당한 기능의 목적과 중요성을 충분히 설명할 수 있나요?
- 프로젝트에서 사용한 기술의 작동 원리와 활용법에 대해 충분한 설명이 가능한가요?
- 어려운 문제를 해결할 수 있는 사고력과 논리력을 충분히 갖추고 계신가요?
- 어려운 문제를 해결한 과정을 다른 사람이 쉽게 이해할 수 있도록 설명할 수 있나요?
성장 가능성
- 프로젝트에서 자신이 이룬 성과와 그 과정에 대해 충분히 설명할 수 있나요?
- 협업 과정에서 자신이 가진 장단점을 충분히 설명할 수 있나요?
- 프로젝트에서 발생한 문제 상황을 자기주도적으로 해결한 경험이 충분히 있으신가요?
- 당신이 일하고 싶어하는 분야의 업무 내용과 성격을 충분히 이해하고 있나요?
- 면접에 충분히 준비했나요? 자기소개와 예상 질문에 대한 답변 대비 등 면접 준비를 충분히 했나요?
업무 태도
- 좋은 개발자가 되기 위한 계획과 방향성을 충분히 갖추고 있나요?
- 개발자로서 성장하기 위한 습관을 충분히 갖추고 있나요? 공부 및 기록 습관 등을 체크하고 있나요?
- 어려운 문제를 해결할 수 있는 충분한 끈기를 가지고 있나요?
- 새로운 기술을 빠르게 학습할 수 있는 기본기와 습관을 충분히 갖추고 있나요?
기술 분야
Language
- Stack, Queue 설명. 기타 자료구조 설명
- 비밀번호 암호 알고리즘에 대해
- 클래스와 인스턴스의 차이
- TDD 란, Unit Test, Integration Test
- OOP 란, 특징 및 주요개념 4가지
- 함수형 프로그래밍
- Abstract Class 란
- Interface 란
- Overloading, Overriding 차이 및 설명
- Compile, Interpret 차이 및 설명
- Buffer 란
- 디자인 패턴 설명, 싱글톤 패턴
OS
- Process, Thread 차이 및 설명
- 32bit cpu에서 자료형 설명 및 int 는 몇 바이트인지, 왜 그런지
- Process 및 Thread 간 통신 방법
- 동기화 문제
- Deadlock 이란, 해결법 또는 알고리즘
- 경쟁상태(Race Condition)와 동기화(Synchronization)의 필요성, 임계 구역(Critical Section) 설명
- 기아 상태(Starvation) 란
- Stack overflow 란
- Heap overflow 란
Network
- HTTP 란
- HTTP의 Verb 설명 및 용도, 멱등성 이란
- PUT, PATCH 차이
- 응답코드 설명, 용도, 차이
- HTTP와 HTTPS의 차이
- SSL/TLS의 Handshake 방법
- HTTP 버전별 차이점
- HTTP Header 설명
- 웹 소켓(Web Socket) 이란
- TCP와 UDP 설명 및 차이, 신뢰성을 보장하는 방법
- 3-Way-Handshake와 4-Way-Handshake
- Caching 이란
- URL, URI 이란
- 프록시(Proxy) 란
HTML, CSS
- div, span 엘레먼트의 차이
- flex 박스 레이아웃이란? table, position 등과의 차이
- 100vh, 100% 차이
- html에 script 포함할때 async, defer 차이
- size유닛에서 px, em, rem 차이
- vw, vh 차이
- 브라우저의 기본 폰트사이즈 (16px)
- rm, rem 단위, 8em으로 설정했을 때 크기 변화 설명
- px의 의미? px을 사용하면 문제점, 사이즈 조절할 때 사용법
- Semantic MarkUp(시멘틱 마크업) 이란
- HTML 문서 구조 설명
- DOM이란, 탐색 방법
- CSS 선택자 우선순위
- Flexbox 란
Javascript
- 동기, 비동기 차이, block, non-block의 차이
- 자료형 설명
- undefined, null 차이
- promise란 then, catch, finally
- 즉시실행함수(IIFE)란, Immediately, Invoked, Function Expression
- 클로저 설명, 사용 용도
- const를 이용해서 코딩하면 좋은점, Thread-Safety
- var와 let, const의 차이, var hoisting
- es5와 es6 차이
- 체이닝의 개념
- localstorage, sessionstorage
- 이벤트 버블링, 캡처링 이란?
- 단방향 바인딩, 양방향 바인딩
- this 란
- call, apply, bind 란
- Callback Function (콜백 함수) 란, 사용 이유, 콜백 지옥을 해결 방법
- Asynchronous 함수를 Synchronous로 변경 방법
- AJAX 란
- map과 forEach, reduce에 대해 설명해주세요.
- Call Stack과 Heap 이란
- JWT 란, Refresh token이란
- 자바스트립트에서 스레드 설명
- Event Loop, Task Queue 설명
- Prototype 이란, 체인이란
- ==, === 차이
- Arrow Function 이란
Typescript
- 타입스크립트 전반적인 설명, 차이
- Generics 설명
- 접근 제한자 (Public, Private, Protected) 설명과 사용
- Static 이란
Java
- Overloading, Overriding
- interface, abstract 차이
- static
- 접근제한자, private, public
- getter, setter
- 의존성 역전 원칙
- 자료구조 중 map, set 차이
- hashtable, hashmap 차이
- springboot, spring차이
- java는 비동기, 동기? block, non-block인지? 비동기로 개발하기 위해서 future 사용법
- Final 키워드
- Equals hashcode 사용법
- Reference type, primitive type
- 의존관계 주입(Dependency Injection) 란
- IoC(Inversion of Control) 란 인버전 오브 컨트롤
Database
- index란? 인덱스를 사용하면 왜 빠르게 검색이 가능한지
- Clustered index, non-clustered index
- 바이너리서치?
- 정렬하는 방식에 대해서 설명할 수 있는지?
- Inner join, outer join 차이
- primary key, foreign key, Compound key
- 트랜젝션이란, 트랜젝션 처리는 왜 해야하는지
- RDB, no-sql ?
- 뷰와 테이블의 차이점, 사용 용도
Maintenance
- 캐시서버 redis, 어떤용도?
- redis 사용시 주의점? single thread
- message queue (msmq)
- 대용량 처리가 들어왔을 때 순차적으로 처리되게 하려면?
- 로깅은 어떻게?
- 트래픽이 많은 경우 여러대의 서버를 구성할 경우 어떤 소프트웨어나 장비를 이용하는게 좋을지
Version Control
- git은 왜 사용할까
- commit, push, merge, rebase 차이
- conflict는 왜 나올까? 해결법
- Git-flow를 사용하는지? 브랜치를 사용해봤던 경험을 알려주세요.
Knowhow, ETC
- 마이크로서비스 아키텍처? 구현해본 적이 있는지
- 기존 시스템을 마이크로로 바꾼다면 어떻게 하는게 좋을지
- 브라우저에 estgames.com을 입력했을 때 어떤 구조로 페이지가 표시될지 설명
- 부하가 많은 페이지가 있는경우 어떻게 해결할 수 있을지?
Algorithm
- 1~10000 까지의 숫자가 있을때 빠르게 섞는 방법
- 운영중인 수많은 서비스가 정상 동작인지 알고리즘
- Call by valud, call by reference 의 차이점
- BF, DFS 설명과 차이
- Dynamic Programming (동적 계획법) 이란
- Git merge 원리 또는 merge를 구현하는 방법 설명
- Quick Sort 알고리즘의 시간복잡도 설명
React
- React 장단점, 왜 사용하는지
- React 컴포넌트의 생명 주기
- Flux 패턴, MVVM 패턴과 Flux 패턴의 차이점
- UseEffect, useLayoutEffect 차이
- Virtual DOM 이란
- callback, promise
- class 대신 className을 사용하는 이유
- UseMemo, useCallback
- Next.js 란
- React Hooks
- useMemo와 useCallback
- 메모이제이션이란
- React.memo와 useMemo의 차이
- Key props를 사용하는 이유
- Props Drilling과 해결 방법
- React.FC 란
- Pure Component 란
- 클래스형 컴포넌트와 함수형 컴포넌트의 차이
- setState의 동작원리
- React Query란
- useEffect와 useLayoutEffect의 차이
- Redux 설명 장단점, useReducer 훅이란
- Context API 설명 및 Redux와 비교
- Recoil 이란
- Next.js의 getStaticProps() 이란
HTML Markup
- { box-sizing: border-box; }는 무엇인가, 장단점
- inline 과 inline-block 의 차이
- relative, fixed, absolute, static 요소의 차이
- 로컬이나 프로덕션 환경에서 사용했던 CSS 프레임워크는 무엇인가, 개선점은 없는가
- 새로운 CSS Flexbox나 Grid 스펙을 사용해본 적이 있는지, 설명
- 반응형 디자인은 적응형 디자인과 어떻게 다른가
- 레티나 그래픽으로 작업 해본 적이 있나요? 그렇다면, 언제, 어떤 기술을 사용하였나
- Srcset 이란
- SVG 란
- absolute 포지셔닝 대신 translate()를 사용하는 이유, 그 반대 사용의 경우와 이유
- IE11 대응에 대한 노하우
Back-end
- HTTP 응답코드 200, 404 등 설명
- Apache와 Tomcat의 차이?
- cookie, session 차이
- JWT, 인증방식에서 Cookie, session, jwt의 차이, refresh token
- 인증, 인가 방식 설명
- 인증, 비밀번호 관리, 어떻게 처리하는것이 좋은지
- 동시에 실행되면 안되는 코드 관리 방법
- preflight 요청이란
- OAuth 란
- 토큰 기반 인증의 방식 설명, Basic, Bearer
Font-end
- 어떤 웹 사이트에 접근했을 때 일어나는 일을 네트워크적 관점에서 순서 설명
- 브라우저의 렌더링 과정을 설명
- 브라우저는 어떻게 동작하나요?
- Webpack, Babel, Polyfill
- CSR(Client-Side Rendering)과 SSR(Server-Side Rendering)의 차이
- 검색 엔진 최적화(Search Engine Optimization, SEO)란
- CORS(Cross-Origin Resource Sharing) 설명
- 쿠키(Cookie)와 세션(Session)이란
- XSS(Cross Site Scripting) 공격
- 각 브라우저 저장소(Local Storage, Session Storage, Cookies)에 대해
- 토큰 기반 인증 방식
- 크로스 브라우징
- 웹 소켓(Web Socket) 이란
- 웹사이트 성능 최적화
- 웹사이트의 성능 측정 방법
- 번들의 사이즈를 줄이는 방법
- 코드 스플릿팅(Code Splitting) 이란
- HTTP (HyperText Transfer Protocol)
- 웹 표준이란
- Reflow, Repaint 이란
- Storybook 이란
- Buffrring 이란, 발생조건
- V8 엔진 설명, Inline caching, Turbo Fan
- MVC와 MVVM 패턴의 차이
- 웹서버, WAS웹 서버와 웹 어플리케이션 서버(WAS)의 차이
- NestJS 란, 특징
- Promise, Callback 차이
- GraphQL, REST API 차이
- UUID 란