{"id":13497278,"url":"https://github.com/WeareSoft/tech-interview","last_synced_at":"2025-03-28T21:32:21.195Z","repository":{"id":37493174,"uuid":"148292054","full_name":"WeareSoft/tech-interview","owner":"WeareSoft","description":":loudspeaker:🙍 tech interview","archived":false,"fork":false,"pushed_at":"2022-11-17T12:20:42.000Z","size":6345,"stargazers_count":4609,"open_issues_count":13,"forks_count":755,"subscribers_count":121,"default_branch":"master","last_synced_at":"2025-03-26T01:43:37.290Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/WeareSoft.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-09-11T09:19:49.000Z","updated_at":"2025-03-25T06:30:20.000Z","dependencies_parsed_at":"2022-07-09T09:46:14.833Z","dependency_job_id":null,"html_url":"https://github.com/WeareSoft/tech-interview","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeareSoft%2Ftech-interview","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeareSoft%2Ftech-interview/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeareSoft%2Ftech-interview/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeareSoft%2Ftech-interview/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WeareSoft","download_url":"https://codeload.github.com/WeareSoft/tech-interview/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246105529,"owners_count":20724322,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T20:00:27.963Z","updated_at":"2025-03-28T21:32:21.149Z","avatar_url":"https://github.com/WeareSoft.png","language":null,"funding_links":[],"categories":["Others","기술블로그/ 기술면접","Job Preparation"],"sub_categories":["Interview"],"readme":"# Tech Interview\n\n**기술 면접 대비를 위한 기본 개념을 정리하는 Repository 입니다.**\n\u003e :star: 내용에 오류가 있거나 추가할 내용이 있다면 Pull Request를 통해서 알려주시면 감사하겠습니다.\n\u003e \u003cbr\u003e :star: Star나 Watching를 통한 많은 관심 부탁드립니다. :)\n\n\u003cdiv align=center\u003e\n\n[![author](https://img.shields.io/badge/author-WeareSoft-red.svg)](https://github.com/WeareSoft)\n[![HeeBlog](https://img.shields.io/badge/blog-Hee-lightgrey.svg)](https://gmlwjd9405.github.io/)\n[![DoyBlog](https://img.shields.io/badge/blog-Doy-lightgrey.svg)](https://doooyeon.github.io/)\n[![NesoyBlog](https://img.shields.io/badge/blog-Nesoy-lightgrey.svg)](https://nesoy.github.io/)\n[![DelfBlog](https://img.shields.io/badge/blog-Delf-lightgrey.svg)](https://delf-lee.github.io/)\n[![contributors](https://img.shields.io/badge/contributors-4-yellowgreen.svg)](https://github.com/WeareSoft/tech-interview/graphs/contributors)\n[![HitCount](http://hits.dwyl.io/WeareSoft/tech-interview.svg?style=popout)](http://hits.dwyl.io/WeareSoft/tech-interview)\n\n\u003c/div\u003e\n\n\n**:book: Contents**\n1. [Data Structure](#1-data-structure)\n2. [Network](#2-network)\n3. [Operating System](#3-operating-system)\n4. [Database](#4-database)\n5. [Design Pattern](#5-design-pattern)\n6. [Algorithm](#6-algorithm)\n7. [Java](#7-java)\n8. [JavaScript](#8-javascript)\n9. [Spring](#9-spring)\n10. [Security](#10-security)\n11. [ETC](#11-etc)\n\n---\n\n## 1. Data Structure\n:arrow_forward: [답변 내용](/contents/datastructure.md)\n* Array\n* LinkedList\n* HashTable\n* Stack\n* Queue\n* Graph\n* Tree\n* 그래프(Graph)와 트리(Tree)의 차이점\n* Binary Heap\n* Red-Black Tree\n* B+ Tree\n\n## 2. Network\n:arrow_forward: [답변 내용](/contents/network.md)\n* OSI 7계층\n* TCP/IP의 개념\n* TCP와 UDP\n* TCP와 UDP의 헤더 분석\n* TCP의 3-way-handshake와 4-way-handshake\n  * Q. TCP의 연결 설정 과정(3단계)과 연결 종료 과정(4단계)이 단계가 차이나는 이유?\n  * Q. 만약 Server에서 FIN 플래그를 전송하기 전에 전송한 패킷이 Routing 지연이나 패킷 유실로 인한 재전송 등으로 인해 FIN 패킷보다 늦게 도착하는 상황이 발생하면 어떻게 될까?\n  * Q. 초기 Sequence Number인 ISN을 0부터 시작하지 않고 난수를 생성해서 설정하는 이유?\n* HTTP와 HTTPS\n* HTTP 요청/응답 헤더\n* HTTP와 HTTPS 동작 과정\n* CORS란\n* GET 메서드와 POST 메서드\n* 쿠키(Cookie)와 세션(Session)\n* DNS\n* REST와 RESTful의 개념\n* 소켓(Socket)이란\n* Socket.io와 WebSocket의 차이\n* Frame, Packet, Segment, Datagram\n\n## 3. Operating System\n:arrow_forward: [답변 내용](/contents/os.md)\n* 프로세스와 스레드의 차이(Process vs Thread)\n* 멀티 프로세스 대신 멀티 스레드를 사용하는 이유\n* Thread-safe\n* 동기화 객체의 종류\n* 뮤텍스와 세마포어의 차이\n* 스케줄러\n* 동기와 비동기\n* 프로세스 동기화\n* 메모리 관리 전략\n* 가상 메모리\n* 캐시의 지역성\n* 교착상태(데드락, Deadlock)의 개념과 조건\n* 사용자 수준 스레드와 커널 수준 스레드\n* 외부 단편화와 내부 단편화\n* Context Switching\n* Swapping\n\n## 4. Database\n:arrow_forward: [답변 내용](/contents/db.md)\n* 데이터베이스 풀\n* 정규화(1차 2차 3차 BCNF)\n* 트랜잭션(Transaction) 이란\n* 트랜잭션 격리 수준(Transaction Isolation Level)\n* Join\n* SQL injection\n* Index란\n* Statement와 PrepareStatement\n* RDBMS와 NoSQL\n* 효과적인 쿼리 저장\n* 옵티마이저(Optimizer)란\n* Replication\n* 파티셔닝(Partitioning)\n* 샤딩(Sharding)\n* 객체 관계 매핑(Object-relational mapping, ORM)이란\n* java JDBC\n\n## 5. Design Pattern\n:arrow_forward: [답변 내용](/contents/designpattern.md)\n* 디자인 패턴의 개념과 종류\n* Singleton 패턴\n* Strategy 패턴\n* Template Method 패턴\n* Factory Method 패턴\n* MVC1 패턴과 MVC2 패턴\n\n## 6. Algorithm \n### :pushpin: [관련 링크](https://github.com/WeareSoft/algorithm-study)\n:arrow_forward: [답변 내용](/contents/algorithm.md)\n* BigO\n* DFS와 BFS의 차이\n* Fibonacci에서의 세 가지(Recursion, Dynamic Programming, 반복) 방식에 대한 시간복잡도와 공간복잡도 차이\n* 정렬 알고리즘의 종류와 개념\n* Greedy 알고리즘\n* 최소 신장 트리(MST, Minimum Spanning Tree)란\n* Kruskal MST 알고리즘\n* Prim MST 알고리즘\n\n## 7. Java\n:arrow_forward: [답변 내용](/contents/java.md)\n* java 프로그래밍이란\n* Java SE와 Java EE 애플리케이션 차이\n* java와 c/c++의 차이점\n* java 언어의 장단점\n* java의 접근 제어자의 종류와 특징\n* java의 데이터 타입\n* Wrapper class\n* OOP의 4가지 특징\n  * 추상화(Abstraction), 캡슐화(Encapsulation), 상속(Inheritance), 다형성(Polymorphism)\n* OOP의 5대 원칙 (SOLID)\n* 객체지향 프로그래밍과 절차지향 프로그래밍의 차이\n* 객체지향(Object-Oriented)이란\n* java의 non-static 멤버와 static 멤버의 차이\n  * Q. java의 main 메서드가 static인 이유\n* java의 final 키워드 (final/finally/finalize)\n* java의 제네릭(Generic)과 c++의 템플릿(Template)의 차이\n* java의 가비지 컬렉션(Garbage Collection) 처리 방법\n* java 직렬화(Serialization)와 역직렬화(Deserialization)란 무엇인가\n* 클래스, 객체, 인스턴스의 차이\n* 객체(Object)란 무엇인가\n* 오버로딩과 오버라이딩의 차이(Overloading vs Overriding)\n* Call by Reference와 Call by Value의 차이\n* 인터페이스와 추상 클래스의 차이(Interface vs Abstract Class)\n* JVM 구조\n* Java Collections Framework\n  * java Map 인터페이스 구현체의 종류\n  * java Set 인터페이스 구현체의 종류\n  * java List 인터페이스 구현체의 종류\n* Annotation\n* String, StringBuilder, StringBuffer\n* 동기화와 비동기화의 차이(Syncronous vs Asyncronous)\n* java에서 '=='와 'equals()'의 차이\n* java의 리플렉션(Reflection) 이란\n* Stream이란?\n* Lambda란?\n\n## 8. JavaScript\n:arrow_forward: [답변 내용](/contents/javascript.md)\n* JavaScript Event Loop\n* 함수 선언식과 함수 표현식\n* 화살표 함수(Arrow Function)\n* 향상된 객체 리터럴(Enhanced Object Literals)\n* Modules\n* 디스트럭처링(Destructuring)\n* 전개 연산자(Spread Operator)\n* 호이스팅(Hoisting)\n* Closure\n* this\n* Promise\n* Async/Await\n\n## 9. Spring\n:arrow_forward: [답변 내용](/contents/spring.md)\n* 스프링 프레임워크란\n* Spring, Spring MVC, Spring Boot의 차이\n* Bean이란\n* Container란\n* IOC(Inversion of Control, 제어의 역전)란\n* MVC 패턴이란\n* DI(Dependency Injection, 의존성 주입)란\n* AOP(Aspect Oriented Programming)란\n* POJO\n* DAO와 DTO의 차이\n* Spring JDBC를 이용한 데이터 접근\n* Filter와 Interceptor 차이\n\n## 10. Security \n:arrow_forward: [답변 내용](/contents/security.md)\n* 대칭키와 비대칭키 차이\n* 패스워드 암호화 방법 \n* SQL Injection 공격 \n* CSRF 공격 \n* XSS 공격\n* OAuth\n\n## 11. ETC\n:arrow_forward: [답변 내용](/contents/etc.md)\n* TDD란\n* 웹 브라우저에서 서버로 어떤 페이지를 요청하면 일어나는 일련의 과정을 설명\n  * Ex. url에 'www.naver.com' 을 입력했다. 일어나는 현상에 대해 아는대로 설명하라.\n* 컴파일러와 인터프리터\n* 분산락\n* 프레임워크와 라이브러리의 차이\n* 64bit CPU와 32bit CPU 차이\n* CVS, SVN, Git\n* Git Branch 종류(5가지)\n* 웹 서버(Web Server)와 웹 어플리케이션 서버(WAS)의 차이\n* 애자일 방법론이란\n* Servlet과 JSP\n* Redis와 Memcached의 차이\n* Maven과 Gradle의 차이\n* Blocking과 Non-Blocking\n* 함수형 프로그래밍이란\n* 이벤트 기반 프로그래밍이란\n* Mock이란\n\n---\n\n# Reference\n* [jojoldu님의 junior-recruit-scheduler](https://github.com/jojoldu/junior-recruit-scheduler/blob/master/README.md)\n* [JaeYeopHan 님의 Interview_Question_for_Beginner](https://github.com/JaeYeopHan/Interview_Question_for_Beginner)\n* [KimHunJin님의 Study-Book/interview](https://github.com/KimHunJin/Study-Book/tree/master/interview)\n* [TaeMInMoon님의 신입 개발자 기술면접](https://trello.com/b/BWtpfywH/%EC%8B%A0%EC%9E%85-%EA%B0%9C%EB%B0%9C%EC%9E%90-%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)\n* [NESOY님의 Back-end-Developer-Interview-Questions](https://github.com/NESOY/Back-end-Developer-Interview-Questions)\n* [hanee24님의 신입 개발자 면접 질문](https://hanee24.github.io/2018/05/13/interview-questions/)\n* [“개발자 면접 예상 질문, 오픈소스로 공유해요”](http://www.bloter.net/archives/246472)\n* [150 Java Interview Questions and Answers](https://www.javacodegeeks.com/2014/04/java-interview-questions-and-answers.html#2)\n* [yangshun님의 front-end-interview-handbook](https://github.com/yangshun/front-end-interview-handbook/blob/master/Translations/Korean/questions/javascript-questions.md)\n* [ganqqwerty님의 123-Essential-JavaScript-Interview-Questions](https://github.com/ganqqwerty/123-Essential-JavaScript-Interview-Questions)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FWeareSoft%2Ftech-interview","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FWeareSoft%2Ftech-interview","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FWeareSoft%2Ftech-interview/lists"}