인터페이스와 추상 클래스의 차이점에 대해 설명하세요.
추상 클래스는 객체의 추상적인 상위 개념으로 공통된 개념을 표현할 때 사용하고, 단일 상속만 가능합니다.
그리고 추상 클래스를 상속하는 집합 간에는 연관 관계가 있습니다. 인터페이스는 구현 객체가 같은 동작을 한다는 것을 보장하기 위해 사용하고, 다중 상속이 가능합니다. 인터페이스를 구현하는 집한 간에는 관계가 없을 수 있습니다.
List와 Map의 차이점은?
List는 순서가 있는 Collection으로, 같은 값을 중복해서 저장할 수 있습니다. 반면, Map은 키와 값의 쌍으로 데이터를 저장하는 인터페이스이며, 키를 이용해 값에 빠르게 접근할 수 있습니다. Map에서는 키 값의 중복이 허용되지 않지만, 값의 중복은 허용됩니다. 주요 차이점은 List는 요소의 순서를 보장하는 반면, Map은 데이터의 순서를 보장하지 않는다는 것입니다. 이러한 특성 덕분에 각 구조는 서로 다른 유형의 데이터 관리에 적합합니다.
직렬화 란?
Java에서 데이터 입출력은 스트림이라는 데이터 통로를 통해 이루어집니다. 그러나 객체 자체는 스트림을 통해 직접 전송할 수 없기 때문에, 객체를 바이트 배열로 변환하는 과정이 필요합니다. 이 과정을 '직렬화'라고 하며, 바이트 배열로 변환된 데이터는 네트워크를 통해 전송되거나 디스크에 저장될 수 있습니다. 역직렬화는 이 바이트 스트림을 다시 객체로 복원하는 과정을 말합니다
Spring MVC에 대해 설명해주세요.
Spring MVC는 Model-View-Controller (MVC) 아키텍처 패턴을 기반으로 한 웹 프레임워크입니다.
MVC 패턴은 사용자 인터페이스와 비즈니스 로직을 분리하여 개발을 용이하게 합니다
Model: 데이터 처리를 담당하며, 서비스(Service) 영역과 데이터 액세스 객체(DAO) 영역으로 구분됩니다.
모델은 뷰와 컨트롤러로부터 독립적이어야 하며, 뷰와 컨트롤러의 어떠한 정보도 포함하면 안 됩니다.
View: 사용자 인터페이스를 담당하며 사용자에게 보이는 부분입니다.
뷰는 모델에서 처리된 데이터를 표시하지만, 모델이나 컨트롤러의 내부 구성을 알아서는 안 됩니다.
Controller: 컨트롤러는 뷰로부터 입력을 받아 모델에 처리를 요청하고, 모델로부터 받은 결과를 뷰에 전달합니다.
또한 모든 요청과 모델에서 발생할 수 있는 에러를 처리합니다.
컨트롤러는 모델과 뷰의 역할을 파악하고 조정하는 중간자 역할을 합니다.
Spring AOP란?
AOP(Aspect Orinted Programming)은 관점 지향 프로그래밍입니다. 핵심 비즈니스 로직과 공통 로직을 분리해서 응집도가 높게 개발할 수 있도록 지원합니다. 공통으로 사용하는 기능들을 외부로 독립된 클래스로 분리합니다.
Spring Bean이란?
Spring Bean은 Spring의 IoC(Inversion of Control) 컨테이너에서 관리되는 객체를 의미합니다.
이 객체들은 필요할 때 IoC 컨테이너에 의해 생성되고 주입됩니다.
개발자는 @Bean 어노테이션을 사용하거나 XML 파일로 구성하여 일반 객체를 Bean으로 등록할 수 있으며,
이렇게 등록된 Bean은 컨테이너가 생명 주기와 의존성을 관리합니다
스프링 컨테이너란?
스프링 컨테이너는 Spring에서 객체를 생성하고 조립하는 역할을 담당합니다.
이 컨테이너를 통해 생성된 객체를 빈(Bean)이라고 부릅니다.
컨테이너는 객체의 생명 주기를 관리하고 의존성을 주입하여 애플리케이션을 구성합니다
좋은 코드란 무엇일까요?
- 논리가 간단해야 한다.
- 중복을 제거하고 표현을 명확하게 한다.
- 코드를 처음 보는 사람도 쉽게 이해하고 수정할 수 있어야 한다.
- 의존성을 최소화해야 한다.
- 새로운 기능을 추가하더라도 크게 구조를 변경하지 않아도 된다.
3 layer architecture란?
3 Layer Architecture는 소프트웨어 개발에서 애플리케이션을 세 가지 주요 계층으로 분리하는 아키텍처입니다.
첫번째, Presentation Layer , 사용자 인터페이스를 담당하며, 사용자와 직접 상호 작용하는 부분입니다.
예를들어, 웹 애플리케이션의 경우 jsp,html,css등이 여기에 포함 됩니다.
두번째, Business Logic Layer , 애플리케이션의 핵심 로직을 처리합니다.
비지니스 규칙을 구현하며, 데이터 처리 및 검증 등을 수행합니다.
세번째, Data Access Layer, db와 상호작용을 담당합니다. sql 쿼리를 실행하고, db와의 연결을 관리하며,
데이터를 저장하고 불러오는 작업을 수행합니다.
3 layer architecture를 통해 각 계층이 독립적으로 개발 및 유지 관리될 수 있습니다
ORM이란?
Object-Relational Mapping은 객체 지향 프로그래밍 언어를 사용하여 관계형 데이터베이스를 조작할 수 있게 해주는 기술입니다. ORM은 객체와 데이터베이스 테이블 간의 매핑을 정의하여, SQL 쿼리를 작성하지 않고도 데이터베이스 작업을 수행할 수 있도록 합니다. 데이터베이스와의 상호작용을 추상화하여 개발 생산성을 높이고, 코드의 가독성과 유지 보수성을 향상시킵니다.
Garbage collection 이 무엇인가요? 왜 쓰나요? 어떤 문제가 있을까요?
Garbage Collection은 사용하지 않는 메모리를 자동으로 회수하여 메모리 누수를 방지하고 프로그램 안정성을 높이는 기능입니다. 이를 통해 메모리 관리를 자동화하지만, 성능 저하와 예측 불가능한 타이밍 문제를 초래할 수 있습니다
웹 브라우저에 google.com 을 치는 순간 일어나는 일을 설명해주세요.
웹 브라우저에 google.com을 입력하면 DNS 조회를 통해 IP 주소를 찾고, 해당 서버와 TCP 연결을 설정한 후 HTTP 요청을 보냅니다. 서버는 요청된 페이지를 반환하고, 브라우저는 이를 렌더링하여 사용자에게 표시합니다
TCP 와 UDP 각각에 대한 설명과 차이점 말하세요.
TCP는 신뢰성 있는 데이터 전송을 보장하는 연결 지향 프로토콜이고, UDP는 빠르고 효율적인 데이터 전송을 위한 비연결 지향 프로토콜입니다. TCP는 패킷 손실 시 재전송을 통해 데이터의 정확성을 보장하며, UDP는 이러한 검증 없이 빠른 전송을 우선시합니다. 차이점은 TCP가 신뢰성과 순서를 보장하지만 속도가 느리고, UDP는 속도가 빠르지만 신뢰성을 보장하지 않습니다
Thread와 Process의 차이는 무엇인가요? 어떤 상황에서 Threading을 해야 하고 어떤 상황에서 processing을 해야하나요? Thrashing이 무엇인가요?
Thread는 프로세스 내에서 실행되는 가벼운 작업 단위로, 메모리를 공유하며 빠른 실행이 가능합니다. Process는 독립적인 실행 단위로, 각기 별도의 메모리 공간을 사용합니다. Threading은 경량 작업과 메모리 공유가 필요한 경우에, Processing은 독립적인 작업과 메모리 격리가 필요한 경우에 적합하며, Thrashing은 과도한 페이지 교체로 시스템 성능이 급격히 저하되는 현상입니다
'CS' 카테고리의 다른 글
[CS] 개발자 면접 대비: 내 마음대로 기술 질문 정리 ① (0) | 2024.06.19 |
---|