Skip to content

Commit aa3ccb2

Browse files
authored
Update Software Engineering.md
1 parent 1e5de7a commit aa3ccb2

File tree

1 file changed

+0
-105
lines changed

1 file changed

+0
-105
lines changed

Interview Cheat Sheet/Software Engineering.md

Lines changed: 0 additions & 105 deletions
Original file line numberDiff line numberDiff line change
@@ -122,110 +122,5 @@
122122

123123
> 캡슐화는 객체의 내부 구현을 외부로부터 숨기고, 오로지 메서드를 통해서만 상호작용하도록 함으로써 외부로부터 보호하는 것이며, 추상화는 객체의 공통된 특징과 동작을 추출하여 클래스로 정의하는 것입니다. 두 개념 모두 객체 지향 프로그래밍에서 코드의 유지보수성과 재사용성을 높이는 데에 도움을 준다는 공통점을 갖고 유사한 특성으로 볼 수 있으나 그 초점에 차이가 있습니다.
124124
</details>
125-
</br>
126-
127-
128-
## RESTful API
129-
<details>
130-
<summary> REST란 무엇인가요? </summary>
131-
132-
> REST란 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미합니다. 구체적으로 설명하자면 HTTP URI를 통해 자원을 명시하고, HTTP Method를 통해 해당 자원에 대한 CRUD 를 적용하는 것을 의미합니다.
133-
134-
</details>
135-
136-
<details>
137-
<summary> 자원이란 무엇인가요? </summary>
138-
139-
> 자원은 접근할 때 구분이 되는 고유한 아이디이자 해당 소프트웨어가 관리하는 모든 것입니다.
140-
</details>
141-
142-
<details>
143-
<summary> REST와 RESTful의 차이는 무엇인가요? </summary>
144-
145-
> RESTful은 REST의 설계 규칙을 잘 지켜서 만들어진 것을 의미합니다.
146-
</details>
147-
148-
<details>
149-
<summary> REST의 구성요소에 대해 설명해주세요. </summary>
150-
151-
> REST의 구성 요소로는 자원, 행위, 표현이 있습니다. </br>
152-
>- 자원은 URI입니다. 모든 자원에는 고유한 아이디가 존재하고, 이 자원은 서버에 존재합니다. </br>
153-
>- 행위는 Method로 GET, POST, PATCH, DELETE 등의 HTTP Method를 사용합니다. </br>
154-
>- 표현은 클라이언트와 서버가 데이터를 주고받는 응답의 형태로 JSON, XML 등이 있습니다.
155-
156-
</details>
157-
158-
<details>
159-
<summary> REST의 장점은 무엇인가요? </summary>
160-
161-
>- 통신이 균일하기 때문에 형태에 상관없이 사용할 수 있습니다.
162-
>- HTTP 프로토콜의 인프라를 그대로 사용하기 때문에 REST API 사용을 위한 별도의 인프라를 구축할 필요가 없습니다.
163-
>- HTTP 프로토콜의 표준을 활용하기 때문에 여러 추가적인 장점을 함께 가져갈 수 있습니다.
164-
>- HTTP 표준 프로토콜을 따르는 모든 플랫폼에서 사용이 가능합니다.
165-
>- REST API 메시지가 의도하는 바를 명확하게 나타내므로 의도하는 바를 쉽게 파악할 수 있습니다.
166-
>- 서버와 클라이언트의 역할을 명확하게 분리할 수 있습니다.
167-
168-
</details>
169-
170-
<details>
171-
<summary> REST의 단점은 무엇인가요? </summary>
172-
173-
>- HTTP 통신할때만 사용이 가능합니다.
174-
>- 행위의 Method 가 제한적입니다.
175-
>- 표준이 존재하지 않습니다.
176-
</details>
177-
178-
<details>
179-
<summary> 행위의 Method들의 대해서 설명해주세요. </summary>
180-
181-
>- GET : 정보를 요청(Read)
182-
>- POST : 정보를 입력(Create)
183-
>- PUT : 정보를 업데이트 (Update)
184-
>- PATCH : 정보의 일부만 업데이트(Update)
185-
>- DELETE : 정보 삭제(Delete)
186-
</details>
187-
188-
<details>
189-
<summary> REST가 필요한 이유는 무엇인가요? </summary>
190-
191-
> 서버가 통신할 때 통신에만 집중이 가능하여 원할한 통신을 할 수 있습니다. 또한 애플리케이션의 분리 및 통합, 다양한 클라이언트의 등장과 최근의 서버 프로그램은 다양한 브라우저와 안드로이드폰, 아이폰과 같은 모바일 디바이스에서도 통신을 할 수 있어야 합니다. 이러한 멀티 플랫폼에 대한 지원을 위해 서비스 자원에 대한 아키텍처를 설계하고 이용하는 방법을 모색한 결과, REST의 필요성이 커지게 되었습니다.
192-
</details>
193-
194-
<details>
195-
<summary> REST의 특징중 하나인 무상태성에 대해서 설명해주세요. </summary>
196-
197-
> 무상태성이란 클라이언트의 context를 서버에 저장하지 않는 걸 의미합니다. 즉, 세션이나 쿠키와 같은 context 정보를 신경쓰지 않아도 되므로 구현이 단순해집니다. 또한 무상태성을 갖게되면 서버는 각각의 요청을 완전히 별개의 것으로 인식하고 처리합니다.
198-
</details>
199-
200-
<details>
201-
<summary> URI는 무엇인가요? </summary>
202-
203-
> 통신을 할 때 사용하는 자원의 고유 아이디로서 URI를 통해 자원을 식별합니다.
204-
</details>
205-
206-
<details>
207-
<summary> API란 무엇인지 구체적으로 설명해주세요. </summary>
208-
209-
> 데이터와 기능을 제공하여 컴퓨터 프로그램간 상호작용을 하며, 서로 정보 교환이 가능하게 해주는 매개체입니다. 즉, 통신을 할 때 정해놓은 규약이나 약속인데 이를 통해 원할하게 통신이 가능합니다.
210-
</details>
211-
212-
<details>
213-
<summary> REST 원칙 중, 클라이언트-서버 구조에 대해 설명해주세요. </summary>
214-
215-
> 클라이언트 응용 프로그램과 서버 응용 프로그램이 서로에 대한 종속성 없이 분리되어 개발되어야 함을 의미합니다. 클라이언트는 서버의 내부 동작에 대한 이해 없이, 리소스 URI만을 알고 동작해야합니다. 서버와 클라이언트는 인터페이스가 변경되지 않는 한 독립적으로 교체 및 개발될 수 있어야 함을 의미합니다.
216-
</details>
217-
218-
<details>
219-
<summary> 클라이언트와 서버를 분리해서 개발하는 이유는 무엇인가요? </summary>
220-
221-
> 클라이언트와 서버를 구분해서 개발하면 각자의 역할이 명확해집니다. 이를 통해 서로 간의 의존성을 최소화하여 개발이 가능하다고 생각합니다.
222-
</details>
223-
224-
<details>
225-
<summary> 표현 계층에서 보통 자원을 어떻게 표현하나요? </summary>
226-
227-
> Client가 자원의 상태에 대한 조작을 요청하면 Server는 이에 대해 응답(표현)을 보내는데, 자원은 `JSON``XML``TEXT``RSS` 등으로 표현되어 나타내질 수 있습니다. 그 중에서도 `JSON` 혹은 `XML`을 통해 전달하는 것이 일반입니다.
228-
229-
</details>
230125
231126

0 commit comments

Comments
 (0)