기술 질문에 대한 답을 내가 생각한 가장 완벽한 답변으로 정리할 예정이다. 물론, 작성한 답변은 추후에 수정될 수 있으며, 더 나은 답변이 떠오르면 이를 반영할 것이다. 이 글은 내 마음대로 기술 질문을 정리한 것이며, 내 말이 정답은 아니다.
ERD를 먼저 설계한 후 Entity를 개발했을 때 어떤 점이 도움이 되셨나요?
ERD를 먼저 설계하면 데이터 구조와 관계를 명확하게 파악할 수 있어, Entity 간의 연관관계를 정의하고 데이터 무결성을 유지하는 데 도움이 됩니다. 덕분에 개발 과정에서 혼란을 줄이고 효율적인 데이터베이스 설계를 할 수 있습니다
JWT를 사용하여 인증/인가를 구현했을 때의 장점은 무엇일까요?
JWT는 서버 상태를 저장하지 않아 확장성이 높고, 세션 관리가 필요 없어 서버 부하를 줄일 수 있습니다.
또한, OAuth 기반의 Google, Facebook 등 다양한 외부 서비스와의 통합이 용이합니다
반대로 JWT를 사용한 인증/인가의 한계점은 무엇일까요?
JWT의 한계점은 Secret key 유출 시 토큰이 조작될 수 있으며, 발급된 토큰은 유효기간이 끝날 때까지 철회할 수 없어 보안 위험이 있습니다. 또한, 토큰 크기가 커서 네트워크 비용이 증가하고, 디코딩 시 Payload 정보가 노출될 수 있어 민감한 정보를 저장하기 어렵습니다
IoC / DI에 대해 간략하게 설명해 주세요!
IoC(Inversion of Control)는 객체의 생성과 관리를 개발자가 아닌 컨테이너(프레임워크)가 담당하는 설계 원칙으로, 객체 간의 결합도를 낮추고 유연하고 확장 가능한 시스템을 만들 수 있게 합니다.
DI(Dependency Injection)는 IoC의 구체적인 구현 방법 중 하나로, 객체가 의존하는 객체를 외부에서 주입받는 방식입니다. 이 방식은 객체 간의 의존성을 명시적으로 관리하며, 테스트 용이성과 코드의 재사용성을 높이는 데 도움이 됩니다.
RESTful API를 사용하는 이유, 정의, 장점
RESTful API는 HTTP 프로토콜을 기반으로 리소스를 CRUD 방식으로 처리하여, 클라이언트-서버 간 통신을 단순하고 효율적으로 합니다. 유연성과 확장성이 뛰어나며, 코드의 가독성과 유지 보수성이 좋고, 서버 확장이 용이합니다.
객체 지향적 프로그래밍에서 관심사를 분리하는 이유
관심사를 분리하면 코드가 구조적이고 관리하기 쉬워지며, 유지 보수성과 가독성이 높아집니다.
결과적으로 코드 재사용이 용이해지고, 협업 시 이해하기 쉬운 코드 베이스를 유지할 수 있습니다
Setter 메서드를 함부로 사용하면 안 되는 이유, Setter 메서드를 대체하는 방법
Setter 메서드는 객체 내부 상태를 외부에서 변경하게 하여 캡슐화를 깨뜨릴 수 있습니다.
이를 대체하기 위해 생성자를 사용하여 객체의 불변성을 유지하고, 필요한 경우 빌더 패턴을 활용합니다.
NoSQL, RDBMS가 무엇인가, 어디에 사용되는가
NoSQL은 비관계형 데이터베이스로, 빅데이터 분석과 실시간 웹 애플리케이션에 사용됩니다. RDBMS는 관계형 데이터베이스로, 구조화된 데이터 처리에 적합하며 은행 시스템, 금융, 주문 처리 시스템 등에 사용됩니다
객체 지향(OOP)에 대해 어떻게 생각하는가
OOP(Object-Oriented Programming)는 절차 지향적 프로그래밍과 달리 객체의 관점에서 프로그래밍하는 방식입니다.
객체, 클래스, 상속, 다형성 등을 통해 코드 중복을 줄이고 유연한 설계를 가능하게 하여 복잡한 시스템을 모듈화할 수 있습니다
'CS' 카테고리의 다른 글
[CS] 개발자 면접 대비: 내 마음대로 기술 질문 정리 ② (0) | 2024.06.27 |
---|