기술면접 관련 및 참고하기 28

기술 면접 스터디 9회차 -( RDB와 NoSQL, 병렬 프로그래밍 )

목차 1. RDB와 NoSQL은 무엇인가요? 차이점 또는 장단점 위주로 설명해주세요. 2. 병렬 프로그래밍에 대해 설명해주세요 1. RDB와 NoSQL은 무엇인가요? 차이점 또는 장단점 위주로 설명해주세요. 1. RDB(Relation DataBase, RDB)란? RDB(Relation DataBase)는 관계형 데이터베이스 입니다. 행과 열을 이용해서 데이터를 저장하고, 공간에 형식이 정해져 있습니다. RDB는 구조화된 테이블을 가지고 있으며, 객체를 이용해 데이터베이스에 저장합니다. 그래서 사전에 데이터베이스 스키마가 정의되어 있어야 합니다. 또한 객체 간의 관계를 이용해 프로그래밍을 구성하는데, 테이블 역시 객체 간의 키를 이용해 테이블을 연결해서 사용합니다. 2. NoSQL(Not Only SQ..

기술 면접 스터디 - 8회차 ( 시간 복잡도와 공간복잡도, 오버라이딩, 오버로딩)

목차 1. 시간복잡도와 공간복잡도란? 중요성까지 2. 오버라이딩과 오버로딩의 차이점 1. 시간복잡도와 공간복잡도란? 중요성까지 복잡도라는 개념은 성능에 대한 평가의 척도입니다. 그래서 시간 복잡도 같은 경우엔 말 그대로 얼마나 수행하는지, 즉 시간의 관점에서 표기하는 방법이고, 공간 복잡도는 얼마나 메모리 공간을 사용하는지 즉 물리적인 관점에서 보는 방법입니다. 1. 시간 복잡도( Time Complexity ) 시간복잡도는 실행 환경에 따라 다르게 측정되기에 연산의 실행 횟수로 수행 시간을 평가합니다. 시간복잡도는 3가지 case로 나타냅니다 1. 최선의 경우 (Best Case) 최선의 경우엔 빅 오메가 표기법을 사용하고, 최선의 시나리오를 의미합니다. ( 가장 좋은 케이스 ) 2. 최악의 경우 (W..

기술 면접 스터디 7회차 - ( Stack, Queue, Array, LinkedList, 절차지향, 객체지향, 함수형 프로그래밍)

목차 1. Stack과 Queue 그리고 Array와 Linked List 자료구조에 대해 말씀해주시고 차이점에 대해 설명해주세요. 2. 절차지향 / 객체지향 / 함수형 프로그래밍이란 무엇이고 차이점은 무엇인가? 1. Stack과 Queue 그리고 Array와 Linked List 자료구조에 대해 말씀해주시고 차이점에 대해 설명해주세요. 1. 스택(Stack)과 큐(Queue)를 비교 스택(stack)과 큐(Queue)는 선형 자료구조입니다. 그러나 데이터의 입, 출력에 있어서 다른점이 있습니다. 스택(Stack)은 데이터를 쌓아 올린 형태의 자료구조입니다. 머릿속으로 구조를 생각해보았을 때, 한정된 공간에 계속해서 데이터를 쌓아 올리면 데이터를 삭제할 때, 가장 최근에 넣은 데이터부터 삭제할 수 있을 ..

기술 면접 스터디 6회차 - ( WAS와 Web Server, 트랜잭션 )

목차 0. 웹 서버는 어떻게 동작하나? 1. Was와 Web Server의 차이 2. 트랜잭션은 무엇인가? 0. 웹 서버는 어떻게 동작하나? 0. 클라이언트는 웹 브라우저를 통해 특정 사이트에 접속하기 위해 웹 서버에 요청을 보냅니다. 1. 요청을 접수한 웹 서버에서는 컨텐츠가 정적인지, 동적인지 판단합니다. 2. 정적 컨텐츠면 웹 서버 내부의 디스크에 있는 정보를 취득해 클라이언트로 보내고, 2.1 동적 컨텐츠면 스위치를 경유해 WAS 서버로 요청을 보냅니다. 3. WAS 에서는 요청을 접수하고 자신이 처리할 수 있는 지, DB 접속이 필요한지 판단합니다. 3.1 자신이 처리가 가능하면 요청을 바탕으로 처리 후 웹 서버(web server)로 결과를 파일 데이터로 반환합니다. 3.2 DB 접속이 필요하..

기술 면접 스터디 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가지의 특징을 가지고 있습니다. (캡슐화, 상속, 다형성) 캡슐화 특정 행동이나 기능에 대해서 관련된 객체와 메서드 등을 하나로 묶을 수 있다...