├── 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 | ![](../../img/taehyeon/controller-view.png) 6 | > @Controller가 View를 반환하기 위해서는 ViewResolver가 사용되며, 설정에 맞게 View를 찾아 렌더링 합니다. 7 | 8 | ### Controller - Data 9 | Spring MVC의 컨트롤러에서도 **Data를 반환해야 하는 경우**도 있습니다. 10 | Spring MVC의 컨트롤러에서는 데이터를 반환하기 위해 `@ResponseBody` 어노테이션을 활용해주어야 합니다. 11 | 이를 통해 Controller도 Json 형태로 데이터를 반환할 수 있습니다. 12 | 13 | ![](../../img/taehyeon/controller-data.png) 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 | ![](../../img/taehyeon/restcontroller.png) 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 | ``` --------------------------------------------------------------------------------