├── LICENSE
├── README.md
├── img
├── jihwan
│ ├── LinkedList.png
│ └── MemoryLocation.png
└── taehyeon
│ ├── controller-data.png
│ ├── controller-view.png
│ └── restcontroller.png
├── question
├── DataStructure
│ └── 배열과리스트의차이.md
├── Spring
│ └── Controller와RestController의차이.md
└── WebApplication
│ └── was와ws의차이.md
└── setting.md
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 Tech-Interview, poorstackdev
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## Startup-Tech-Interview
2 | > 들어오신 모든 분! 관심 가져주셔서 감사합니다! 🙇🏻♂️
3 | > 이 레포지터리는 모두에게 열려있습니다! PR 규칙은 [여기](./setting.md) 를 참고하세요.
4 | > 이 리드미는 [라이센스](./LICENSE) 에 의거 리드미로 인한 피해는 온전히 사용자 책임임을 알려드립니다.
5 |
6 | ### 자료구조
7 | [배열(Array)과 리스트(LinkedList)의 차이](question/DataStructure/배열과리스트의차이.md)
8 |
9 |
10 | ### Web application 공통
11 | [WAS와 WebServer의 차이](./question/WebApplication/was와ws의차이.md)
12 |
13 | ### Spring
14 | [@Controller와 @RestController의 차이](/question/Spring/Controller와RestController의차이.md)
15 |
--------------------------------------------------------------------------------
/img/jihwan/LinkedList.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/poorstackdev/Tech-Interview/8fd346b9997fe8a5ed76e06d87c3026d3e69e94c/img/jihwan/LinkedList.png
--------------------------------------------------------------------------------
/img/jihwan/MemoryLocation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/poorstackdev/Tech-Interview/8fd346b9997fe8a5ed76e06d87c3026d3e69e94c/img/jihwan/MemoryLocation.png
--------------------------------------------------------------------------------
/img/taehyeon/controller-data.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/poorstackdev/Tech-Interview/8fd346b9997fe8a5ed76e06d87c3026d3e69e94c/img/taehyeon/controller-data.png
--------------------------------------------------------------------------------
/img/taehyeon/controller-view.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/poorstackdev/Tech-Interview/8fd346b9997fe8a5ed76e06d87c3026d3e69e94c/img/taehyeon/controller-view.png
--------------------------------------------------------------------------------
/img/taehyeon/restcontroller.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/poorstackdev/Tech-Interview/8fd346b9997fe8a5ed76e06d87c3026d3e69e94c/img/taehyeon/restcontroller.png
--------------------------------------------------------------------------------
/question/DataStructure/배열과리스트의차이.md:
--------------------------------------------------------------------------------
1 | ## 배열(Array)
2 |
3 | ### 배열의 특징
4 | - 같은 자료형을 가진 변수를 하나로 나타낸 것. ` ex) int[] arr = new int[]`
5 | - 연속된 메모리 공간으로 이루어져 있는 것.
6 | - 정적 표현.
7 | - 인덱스를 이용하여 표현. `ex) arr[1]`
8 | - 지역성을 가지고 있다.
9 |
10 |
11 |
12 |
13 | ### 배열의 장점
14 | 1. 인덱스를 통한 검색이 용이함.
15 | 2. 연속적이므로 메모리 관리가 편한다.
16 |
17 | ### 배열의 단점
18 | 1. 한 데이터를 삭제하더라도 배열은 연속해야 하므로 공간이 남는다. (메모리 낭비)
19 | 2. 정적이므로 배열의 크기를 컴파일 이전에 정해주어야 한다.
20 | 3. 컴파일 이후 배열의 크기를 변동 할 수 없다.
21 |
22 |
23 | ## 리스트(LinkedList)
24 |
25 | ### 리스트의 특징
26 | - 순서가 있는 데이터 집합.
27 | - 불연속적으로 메모리 공간을 차지.
28 | - 동적 표현.
29 | - 인덱스가 없음.
30 | - 포인터를 통한 접근.
31 |
32 |
33 |
34 | ### 리스트의 장점
35 | 1. 포인터를 통하여 다음 데이터의 위치를 가르키고 있어 삽입 삭제의 용이.
36 | 2. 동적이므로 크기가 정해져 있지 않다.
37 | 3. 메모리 재사용의 편리.
38 | 4. 불연속적이므로 메모리 관리의 편리.
39 |
40 | ### 리스트의 단점
41 | 1. 검색 성능이 좋지 않다.
42 | 2. 포인터를 통해 다음 데이터를 가르키므로 추가적인 메모리 공간 발생.
43 |
44 |
45 |
46 | ## 🥕 정리
47 |
48 | Array | 배열
49 | - 데이터의 크기가 정해져 있고, 추가적인 삽입/삭제가 일어나지 않으며 검색에서 유리.
50 | - ex)`int num[4]` 라고 지정하면 주소값 + 4byte 형식으로 메모리가 연속적으로 잡힌다.
51 |
52 |
53 | LinkedList | 리스트
54 | - 데이터의 크기가 정해져 있지 않고, 삽입/삭제가 많이 일어나며, 검색이 적은 경우 유리.
55 | - 리스트는 주소가 연속적이지 않아 크기를 예측할 수 없고, 그만큼 소요시간이 든다.
56 |
57 |
58 |
--------------------------------------------------------------------------------
/question/Spring/Controller와RestController의차이.md:
--------------------------------------------------------------------------------
1 | ## @Controller
2 | ### Controller - View
3 | 전통적은 Spring MVC의 컨트롤러인 `@Controller`는 주로 **View를 반환하기 위해 사용**합니다.
4 | 아래와 같은 과정을 통해 Spring MVC Container는 Client의 요청으로 View를 반환합니다.
5 | 
6 | > @Controller가 View를 반환하기 위해서는 ViewResolver가 사용되며, 설정에 맞게 View를 찾아 렌더링 합니다.
7 |
8 | ### Controller - Data
9 | Spring MVC의 컨트롤러에서도 **Data를 반환해야 하는 경우**도 있습니다.
10 | Spring MVC의 컨트롤러에서는 데이터를 반환하기 위해 `@ResponseBody` 어노테이션을 활용해주어야 합니다.
11 | 이를 통해 Controller도 Json 형태로 데이터를 반환할 수 있습니다.
12 |
13 | 
14 |
15 | `@RestController`가 Data를 반환하기 위해서는 `viewResolver` 대신에 `HttpMessageConverter`가 동작합니다.
16 | `HttpMessageConverter`에는 여러 `Converter`가 등록되어있고, 반환해야 하는 데이터에 따라 사용되는 `Converter`가 달라집니다.
17 | 단순 문자열인 경우에는 `StringHttpMessageConverter`가 사용되고, 객체인 경우에는 `MappingJackson2HttpMessageConverter`가 사용되며, 데이터 종류에 따라 서로 다른 `MessageConverter`가 작동하게 됩니다.
18 | Spring은 클라이언트의 HTTP Accept 헤더와 서버의 컨트롤러 반환 타입 정보 둘을 조합해 적합한 `HttpMessageConverter`를 선택하여 이를 처리합니다.
19 |
20 | ## RestController
21 | `@RestController`는 Spring MVC Controller에 `@ResponseBody`가 추가된 것 입니다.
22 | `@RestController`의 주 용도는 Json형태로 객체 데이터를 반환하는 것 입니다.
23 |
24 | 
25 |
26 | ## 정리
27 | 예전에 프로그래밍을 할 때에는 jsp나 html과 같은 뷰를 전달해주는 방식이였기 때문에 `@Controller`를 사용해왔다.
28 | 최근에는 프론트엔드와 백엔드를 따로 두고 백엔드에서는 REST API를 통해 json으로 데이터만 전달하기 때문에 편리성을 위해 `@RestController`를 사용하게 되었다.
--------------------------------------------------------------------------------
/question/WebApplication/was와ws의차이.md:
--------------------------------------------------------------------------------
1 | ## WAS 와 WebServer의 차이가 무엇인가요?
2 |
3 | * WAS(Web Application Server)
4 | * 비즈니스 로직을 넣을 수 있다.
5 | * ex) Tomcat, PHP, ASP, .NET
6 | * WS(Web Server)
7 | * 비즈니스 로직을 넣을 수 없다.
8 | * Nginx, Apache.. etc
9 |
10 |
11 | ## WAS 와 WS 를 분리하는 이유는?
12 |
13 | 1. Web Server 를 통해 정적인 파일들을 Application Server 까지 보내지 않고 앞단에서 빠르게 보내줄 수 있기 때문입니다.
14 |
15 | 2. 따라서 Web Server 에서는 정적 컨텐츠만 처리하도록 기능을 분배하여 서버의 부담을 줄일 수 있습니다.
--------------------------------------------------------------------------------
/setting.md:
--------------------------------------------------------------------------------
1 | ### 🚀 README.md
2 | ```
3 | ### 분류 (ex_Spring)
4 | - [여러분들은 ???을 아시나요?](./???_name.md)
5 | ```
6 |
7 |
8 | ### 🌈 파일구조
9 | ```
10 | img/userName/**.png :: 이미지 첨부가 필요할 때
11 | question/..etc :: 질문 업로드 할 때
12 | ```
13 |
14 | ### 🐳 커밋규칙
15 | ```
16 | # brach 생성
17 | master -> userName
18 |
19 | # 병합
20 | userName -> master [Pull-Request -> Merge]
21 | ```
--------------------------------------------------------------------------------