🧸프로그래밍 공통
다른 분의 블로그를 보고 정리한 글입니다.
https://dev-coco.tistory.com/164
Restful API에 대해 설명해주세요.
Restful API는 두 컴퓨터 시스템이 인터넷을 통해 안전하게 정보를 전달하기 위해 사용되는 인터페이스입니다.
- GET: 데이터 조회
- POST: 데이터 추가 및 수정
- PUT: 데이터 변경
- PATCH: 일부 데이터 변경
- OPTION: 웹 서버에서 지원되는 메소드의 종류를 확인할 때 사용
프레임워크와 라이브러리 차이에 대해 설명해주세요.
이 둘의 차이점은 제어 흐름에 대한 주도권이 누구에게/어디에 있는가에 있습니다.
프레임워크는 전체적인 흐름을 쥐고 있고, 개발자는 그 안에서 라이브러리에 대한 흐름을 쥐고 있습니다.
Call By Value와 Call By Reference의 차이에 대해 설명해주세요.
- Call By Value (값에 의한 호출)
인자로 받은 값을 복사하여 처리하는 방식입니다.
- Call By Reference (참조에 의한 호출)
인자로 받은 값의 주소를 참조하여 직접 저장해 값에 영향을 주는 방식입니다.
CORS(교차 출처 리소스 공유, Cross-Origin Resource Sharing)에 대해 설명해주세요.
CORS란 도메인이 서로 다른 2개의 사이트가 데이터를 주고 받을 때 발생하는 문제입니다.
절차지향 프로그래밍과 객체지향 프로그래밍의 차이점에 대해 설명해주세요.
-
절차지향 프로그래밍
순차적인 처리를 중요시하는 프로그래밍 기법, 대표적인 언어로 C언어가 있습니다. 컴퓨터의 처리구조와 유사해 실행속도가 빠릅니다.
-
객체지향 프로그래밍
실제 세계의 사물들을 객체로 모델링하여 개발을 진행하는 프로그래밍 기법이며, 대표적인 언어로 Java가 있습니다.
캡슐화, 상속, 다형성과 같은 기법을 이용할 수 있으며 절차지향 언어보다는 실행속도가 느립니다.
동적 쿼리란 무엇이고 언제 동적 쿼리를 사용하나요?
동적 쿼리란 실행시에 특정 조건이나 상황에 따라 쿼리 문장이 변경되어 실행되는 쿼리문을 말합니다.
컴파일시 SQL 문장을 확정할 수 없는 경우에 사용합니다. 실행 시점에 따라 WHERE절에 조건이 달라질 때 사용합니다.
CSRF(Cross-Site Request Forgery)에 대해 설명하고, 이를 막기 위한 방법에 대해 설명해주세요.
사이트 간 요청 위조의 약자로 웹 어플리케이션 취약점 중 하나입니다. 공격자가 의도한대로 사용자가 행동하게 하여 특정 웹 페이지를 보안에 취약하게 한다거나 수정, 삭제 등의 작업을 하게 만드는 공격 방법을 의미합니다.
상태를 변화시키는 POST, PUT 등의 요청에 대해 CSRF 토큰이 포함되어야만 요청을 처리하며 공격을 방어하는 방법이 있습니다.
대칭키, 비대칭키 암호화 방식에 대해 설명해주세요.
대칭키, 비대칭키는 양방향 암호화 방식입니다.
대칭키는 암호화와 복호화에 같은 암호를 쓰는 알고리즘입니다.
비대칭키는 암호화와 복호화 할 때 서로 다른 키를 쓰는 알고리즘입니다.
TDD (Test-Driven-Development)의 개념에 대해 설명해주세요.
TDD란 작은 단위의 테스트 케이스를 작성하고 그에 맞는 코드를 작성하여 테스트를 통과한 후에 상황에 맞게 리팩토링하는 테스트 주도 개발 방식을 말합니다.
테스트 코드를 작성해야 하는 이유에 대해 아는대로 설명해주세요.
- 예상하지 못한 오류에 대한 피드백을 위해
- 실수를 줄여준다.
- 좋은 설계로 작성되게끔 코드를 유도
MSA (Microservice Architecture)가 뭔지 설명해주세요.
MSA는 1개의 시스템을 독립적으로 배포 가능한 각각의 서비스로 분할합니다. 각각의 서비스는 API를 통해 데이터를 주고 받으며 1개의 큰 서비스를 구성합니다.
DDD (Domain-Driven-Design)에서 얘기하는 계층과 각각의 역할에 대해 설명해주세요.
- 표현 계층 (Presentation layer)
사용자의 요청에 대해 해석하고 응답하는 일을 책임지는 계층 (Controller)
- 응용 계층 (Application layer)
비즈니스 로직을 정의하고 정상적으로 수행될 수 있도록 도메인 계층과 인프라스트럭처 계층을 연결해주는 역할을 하는 계층 (Service)
- 도메인 계층 (Domain layer)
비즈니스 규칙, 정보에 대한 실질적인 도메인에 대한 정보를 가지고 있으며 이 모든 것을 책임지는 계층 (Entity)
- 인프라스트럭처 계층 (Infrastructure layer)
외부와의 통신을 담당하는 계층 (Repository)