전체 글 193

기술 면접 스터디 5일 -( 프로세스와 스레드, TCP와 UDP)

목차 1. 프로세스와 스레드의 차이에 대해 설명해 주세요 2. TCP와 UDP의 공통점과 차이점을 설명해보세요. 1. 프로세스와 스레드의 차이에 대해 설명해 주세요 프로세스는 하나의 OS로부터 할당받는 작업의 단위입니다. 프로세스는 하나 이상의 스레드를 가지게 됩니다. 스레드는 프로세스의 자원을 이용하는 실행 흐름의 단위 입니다. OS에서는 메모리에 프로세스가 올라갈 때마다 code/data/stack/heap 영역을 할당합니다. 그러니 스레드는 프로세스가 할당받은 메모리 내에서 stack만 할당받고 나머지 영역은 스레드끼리 공유합니다. 프로세스는 다른 프로세스가 오류가 있으면 자신의 프로세스에 영향이 없지만, 스레드는 공유된 메모리를 사용하고있는 다른 스레드도 오류가 발생하는 점이 있습니다. 차이점 :..

GC (Garbage Collection)이란 무엇인가?

과거에도 GC가 무엇인지 간단하게 알고 있었다. Java에서는 C언어와 다르게 메모리를 자동으로 관리해주는 것이 있는데, 이것이 GC이다. 면접을 위해서 GC를 이해하고 정리하고자 합니다. 1. GC란? GC는 (Garbage Collection, GC)의 약어로 메모리를 관리하는 하나의 기법입니다. JVM (Java Virtual Machine, JVM)의 Heap 영역에서 연결이 끊어진 객체를 제거하는 역할을 합니다. 이로써 개발자는 메모리를 관리하지 않고 오로지 기능구현에만 신경쓸 수 있는 장점이 있습니다. 그러나 GC가 자동으로 메모리를 관리해주지만, 언제 해제되는지 몰라서 정확하게 시점이 파악이 어렵습니다. 때문에 실시간 서비스에서 만약에 갑자기 GC가 동작하면 GC를 담당하고있는 스레드를 제외..

기술 면접 스터디 4일차 - ( List, Set, Map, Hash Map, Parameter, Argument)

목차 1. List, Set, Map, Hash Map 의 차이점 2. Parameter와 Argument의 차이점 1. List, Set, Map, Hash Map 의 차이점 먼저 차이점을 잡기에 앞서 List와 Set, Map은 Collection을 다루는 인터페이스입니다. Java에서는 List와 Set의 공통된 부분을 다시 뽑아서 새로운 인터페이스,인 Collection을 추가로 정의했습니다. 그래서 이 세가지의 인터페이스를 관계로 나타내면 다음과 같습니다. List와 Set의 차이점 List와 Set은 데이터를 저장할 수 있는 Collection입니다. List는 데이터의 순서를 보장해서 인덱스 값으로 원하는 위치에 있는 데이터를 찾을 수 있지만, Set은 순서를 보장하지 않습니다. 그래서 인덱..

기술 면접 스터디 3일차 - ( MSA, 제네릭)

목차 1. MSA(Microservice Architecture)란? 2. 제네릭에 대해 설명하고, 컬렉션 클래스에서 왜 제네릭을 사용하는지 설명하시오 1. MSA(MicroService Architecture)란? MSA란? MSA는 (MicroService Architecture, MSA) 단일 프로그램을 각 컴포넌트 별로 나눠서 작은 서비스의 조합으로 구축하는 아키텍쳐 입니다. 그래서 큰 서비스 속의 작은 기능들 혹은 부분을 각각으로 나눠서 다루는 독립적인 서비스들을 연결한 아키텍쳐를 말합니다. 일반적으로 MSA(MicroService Architecture, MSA) 와 Monolitic(모놀리틱) 방식을 많이 비교해서 설명합니다. ( 반대 개념 ) MSA 아키텍쳐의 장점 새로 추가되는 부분을 빠..

기술면접 스터디 - 2일차 (DI, Index)

목차 1. DI(Dependency Injection)에 대한 설명과 해당 기술의 장점에 대해서 설명해주세요. 2. DB에서 인덱스를 잘 사용하면 어떤 장점이 있을까요? 1. DI(Dependency Injection, DI)에 대한 설명과 해당 기술의 장점에 대해서 설명해주세요. DI(Dependency Injection, DI)란? DI는 (dependency injection)의 약어로 의존관계 주입 또는 의존성 주입이라고 불립니다. 객체를 직접 생성하는 방식이 아닌 외부에서 생성 후 주입 시키는 방식을 말하는데, 스프링에서는 Bean 정보를 바탕으로 의존관계를 컨테이너가 자동으로 연결해주는 것입니다. 여기서 말하는 의존은 한 클래스의 변경이 다른 클래스에 영향을 미친다면, 이 관계는 의존 관계가 ..

기술 면접 스터디 1일차 - ( OOP, Rest api)

목차 1. 객체지향 프로그래밍(OOP)에 대해 설명해주세요. 알고있는 원칙이나 키워드를 언급해주세요 2. REST API란 무엇인가요? 1. 객체지향 프로그래밍(OOP)에 대해 설명해주세요. 알고있는 원칙이나 키워드를 언급해주세요 객체지향 프로그래밍이란? (Object-Oriented Programming, OOP) 객체지향 프로그래밍 oop는 객체의 관점에서, 객체라는 단위를 이용해 로직을 구성하는 방식을 말합니다. 여기서 말하는 객체는 프로그램의 동작의 주체가 되는 요소로, 서로 다른 객체 간 상호작용을 통해 프로그램을 구성합니다. 이 객체지향 프로그래밍은 3가지의 특징을 가지고 있습니다. (캡슐화, 상속, 다형성) 캡슐화 특정 행동이나 기능에 대해서 관련된 객체와 메서드 등을 하나로 묶을 수 있다...

Cascade Type의 종류, 그리고 의도

JPA에서는 영속성 전이(CASCADE)라는 개념을 지원해줍니다. 그럼 과연 영속성전이(CASCADE)란? 무엇인가요? 해석하자면 대상 엔티티에 대해 수행하는 작업들이 관련 엔티티에서도 작업이 적용된다는 것이다. JPA에서는 영속성 전이 타입 5가지를 지원해줍니다. ALL 상위엔티티에서 하위 엔티티로 모든 작업을 전파합니다. ( 모든 Cascade를 적용 ) PERSIST 하위 엔티티까지 영속성을 전달합니다. ( 엔티티를 영속화할 때, 연관된 엔티티도 함께 유지 ) MERGE 엔티티 상태를 병합할 때, 연관된 엔티티도 모두 병합 REMOVE 연결된 하위 엔티티까지 제거함 REFRESH 연결된 하위 엔티티까지 인스턴스 값 새로고침 ( 데이터베이스로부터 인스턴스 값 다시 읽어오기 ) DETACH 영속성 컨텍..

스프링/JPA 2023.03.22

Test Code 2부

과거 Test Code 관련해서 정리한 글이 있었다. 왜 Test Code가 필요하고, 어떻게 작성해야하며, 전반적인 내용을 가볍게 다뤘었다. 오늘은 테스트 코드 관련해서 조금 더 깊은 내용을 작성해보고자 한다. 과거 정리한 글 2022.12.27 - [독후감/자바 웹프로그래밍 Next Step] - Chapter 2 테스트와 리팩토링 2022.12.28 - [TIL(Today I Learned)] - Day.39 테스트 그리고 refactoring 일단 항상 코드를 작성하다보면 테스트코드를 짜야지 하지만, 이렇게 짜는 것이 맞나? 라는 물음을 스스로 해보았을 것이다. 나 역시 이번 프로젝트를 하면서 거의 테스트 코드를 작성하지 않았다. 나름대로의 이류를 들어보자면 다음과 같다. 테스트 코드를 작성할 기..

JPA 데이터베이스 초기화 전략 (5가지 )

jpa에서는 애플리케이션 구동시 JPA 데이터 베이스의 전략을 설정할 수 있습니다. 총 5개의 전략을 지원해줍니다. create : 기존 테이블 삭제 후 테이블 생성 create - drop : create와 같지만, 종료 시점에 테이블을 삭제 none : 사용하지 않음 update : 기존의 테이블과 비교해서 변경된 내용이 있으면 수정 (SessionFactory와 연결된 DB를 비교해서 추가된 항복은 추가, 같은 변수명이면 오류 발생 ) validate : 엔티티와 테이블 정상 매핑 확인 ( SessionFactory 시작 시 객체 구성과 스키마가 다르면 예외가 발생) 이렇게 5가지의 전략이 있습니다. 일반적으로 초기 개발이나 테스트 할 떄는 create, update, create-drop을 주로 ..

스프링/JPA 2023.03.22

SSR(Server Side Rendering) 그리고 CSR(Client Side Rendering)

과거에 웹 애플리케이션에 관해서 간단하게 공부를 진행한 적이 있다. 간단하게 복습하고 넘어가자 . 과거 정리 내용 : https://jipang9-greedy-pot.tistory.com/111 정적 리소스의 처리를 웹 서버에게, 애플리케이션 로직처럼 동적 처리는 was에, 이렇게 구성하면 효율적으로 리소스 관리를 할 수 있다. 서블릿의 흐름 ( Servlet ) 1) 사용자가 url에 요청 2) was 서버에서 요청 메세지를 기반으로 객체 생성 하고, 그 객체를 서블릿 컨테이너에 전달 (이 때 싱글톤 패턴 이용 - 하나의 객채만으로 생성-공유 ) 3) 그에 맞는 정보를 전달 was의 가장 큰 특징 : 동시 요청을 위한 멀티 쓰레드 처리 지원 멀티쓰레드 ? : 스레드는 애플리케이션 코드를 순차적으로 실행..