[기술 면접 준비]
-
기술 면접 스터디 - 6일차(트랜잭션, 웹서버, WAS)[기술 면접 준비] 2023. 4. 13. 20:36
Q. 트랜잭션이 무엇인지 설명해 주세요. A. 트랜잭션이란, 데이터 베이스의 상태를 변경시키는 작업의 단위를 의미하며, 논리적으로 더 이상 쪼갤 수 없는 업무 처리의 최소 단위 입니다. 트랜잭션은 4가지의 특징을 가지고 있습니다 원자성(Atomicity) 트랜잭션의 연산은 데이터베이스에 모두 반영되든가 아니면 전혀 반영되지 않아야 한다. 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 하며, 어느 하나라도 오류가 발생하면 트랜잭션 내의 명령 전부가 취소되어야 한다. => 즉, 작업의 일부만 반영되어서는 안된다! 일관성(Consistency) 트랜잭션의 작업 처리 결과가 항상 일관성이 있어야 한다. 트랜잭션이 진행되는 동안에 데이터베이스가 변경되더라도, 변경된 데이터베이스로 트랜잭션이 진행되는 것이 아..
-
기술 면접 스터디 - 5일차(프로세스, 쓰레드, TCP, UDP)[기술 면접 준비] 2023. 3. 31. 17:46
Q. 프로세스와 스레드의 차이에 대해 설명해 주세요. A. 프로세스는 운영체제로부터 CPU를 할당받고 프로그램이 실행되고 있는 상태를 말하며, 스레드는 이 프로세스 안에서 실행되는 흐름단위를 말합니다. 프로세스는 운영체제로 부터 Code, Data, Stack, Heap 영역을 할당받습니다. 스레드는 프로세스의 메모리 중에서 Stack 영역만을 독립적으로 갖고, Code, Data, Heap 영역은 다른 스레드와 공유하게 됩니다. 멀티프로세스는 하나의 응용 프로그램을 여러개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하도록 하는 것이며, 멀티 스레드는 하나의 응용 프로그램을 여러개의 스레드로 구성하여 각 스레드가 하나의 작업을 처리하도록 하는 것 입니다. https://cocoon1787.ti..
-
기술 면접 스터디 - 4일차(List, Set, Map, HashMap, Parameter와Argument)[기술 면접 준비] 2023. 3. 30. 13:35
Q. List, Set, Map, HashMap의 차이에 대해서 설명해주세요. A. List, Set, Map, HashMap 모두 자바의 컬렉션 프레임 워크 입니다. 우선, 컬렉션 프레임 워크를 사용하는 이유는 다음과 같습니다. 기존에는 많은 데이터를 처리하기 위해 배열을 사용하였으나, 크기가 고정되어 있고 삽입과 삭제 시간이 오래 걸린다는 불편한 점들이 많았습니다. 따라서 이를 보완하기 위해 자바에서 동적 배열 개념인 컬렉션 프레임워크를 제공하였는데요. 이를 통해 자료의 삽입, 삭제, 검색 등이 용이해지고 제네릭으로 선언되어 있기 때문에 어떤 자료형이라도 담을 수 있고 크기가 자유롭게 늘어난다는 강점을 갖고 있습니다. List 는 선형 자료 구조로써 순서를 보장하고, 데이터의 중복을 허용합니다. Se..
-
기술 면접 스터디 - 3일차(MSA, 제네릭)[기술 면접 준비] 2023. 3. 29. 13:34
Q. MSA(Microservice Architecture)란? A. MSA 란 하나의 애플리케이션을 느슨하게 결합된 서비스의 모임으로 구조화하는 소프트웨어 개발 기법입니다. 마이크로서비스는 완전히 독립적으로 배포가 가능하고, 다른 기술 스택(개발 언어, 데이터베이스 등)이 사용 가능한 단일 사업 영역에 초점을 둡니다. MSA의 특징으로는 API를 통해서만 상호작용 할 수 있다는 것입니다. 마이크로 서비스는 서비스의 end-point를 API 형태로 외부에 노출하고, 실질적인 세부사항은 모두 추상화 하게 됩니다. 따라서 내부의 구현로직이나 구조는 API에 의해 철저하게 가려지게 됩니다. 또한, 제대로 설계된 MSA는 하나의 비즈니스 범위에 맞춰 만들어지므로 하나의 기능만을 수행합니다. 하나의 기능만을 수..
-
기술 면접 스터디 - 2일차(DI, Index)[기술 면접 준비] 2023. 3. 28. 13:57
Q. DI(Dependency Injection)에 대한 설명과 해당 기술의 장점에 대해 설명해주세요. A. 객체를 사용하기 위해서 의존성 또는 의존관계를 주입 받는다는 개념으로, 객체를 클래스 내부에서 직접 생성하는 방식이 아닌, 외부에서 생성 후 주입시키는 방법을 말합니다. 이때 의존관계란, A라는 객체가 B객체를 알고있고, 만약 B가 변경되면 A에도 영향을 미친다면 A와 B는 의존관계에 놓여있다 라고 표현합니다. 스프링에서는 Bean 정보를 바탕으로 컨테이너가 의존관계를 자동으로 연결해줍니다. DI 기술의 장점으로는 특정 객체가 다른 객체에 의존하는 의존성으로부터 격리시켜 코드 테스트에 용이하다. 객체 끼리의 결합도가 줄어든다. 코드를 확장하거나 변경할 때 영향을 최소화 한다(추상화). 가독성이 높..
-
기술 면접 스터디 - 1일차(OOP, Rest API)[기술 면접 준비] 2023. 3. 27. 13:34
Q. 객체지향 프로그래밍(OOP)에 대해 설명해주세요. 알고있는 원칙이나 키워드를 언급해주세요. A. 객체지향 프로그래밍은 객체들의 집합으로 프로그램의 상호작용을 표현하며, 데이터를 객체로 취급하여 객체 내부에 선언된 메서드를 활용하는 프로그래밍 방식을 말합니다. A. 객체지향의 설계 원칙은 SOLID 원칙이 있습니다. SRP(Single Responsibility Principle) : 단일 책임 원칙 모든 클래스는 각각 하나의 책임만을 가져야 한다. OCP(Open Closed Principle) : 개방-폐쇄 원칙 유지 보수 사항이 생긴다면 코드를 쉽게 확장할 수 있도록 하고 수정할 때는 닫혀 있어야 한다. LSP(Luskov Substitution Principle) : 리스코프 치환 원칙 프로그..