기술 면접 준비 26

[CS 모의면접 스터디] 스프링 편

23.11.30 CS 모의면접 스터디 에서 사용할 질문&예상답변을 정리하였습니다. 키워드 JPA(ORM), Hibernate, Spring Data JPA JPA의 N+1문제 필터와 인터셉터 주요 어노테이션(@Component, @Service, @Repository, @Controller) Spring Security WAS vs. WS 프로그래밍 패러다임(객체지향 프로그래밍, 절차형 프로그래밍, 함수형 프로그래밍..) Q. JPA, Hibernate, Spring Data JPA 차이점에 대해 말씀해 주세요. JPA는 Java에서 객체-관계 매핑(ORM)을 위한 표준 명세인 인터페이스입니다. JPA는 Java Persistence API의 약자로, 자바 애플리케이션에서 관계형 데이터베이스를 사용하는 ..

[CS 모의면접 스터디] 자바 편

23.11.16 CS 모의면접 스터디 에서 사용할 질문&예상답변을 정리하였습니다. Q. 자바에서 String을 초기화하는 방법에는 두 가지가 있습니다. 두 가지 방법에 대해 설명부탁드립니다. 리터럴 방식과 new키워드를 사용하는 방식이 있습니다. [꼬리질문] 그럼 두 방식의 차이점은 무엇일까요? 둘 다 문자열을 생성하지만, 방식에 따라 저장되는 위치가 다릅니다. 리터럴을 사용해 선언 및 생성을 하면 해당 문자열은 StringConstantPool에 저장되고 추후 같은 문자열을 생성하려고하면 먼저 StringConstantPool 안을 찾아본 후 같은 문자열이 있다면 같은 주소값을 반환합니다. 반면 new 키워드를 사용하면 해당 문자열은 Heap영역에 저장되며, 객체를 생성할 때마다 Heap영역 안에 새롭..

[기술면접] 알고리즘 - 2/2

1편에 이어서 작성해 보겠습니다. 😎 동적 프로그래밍(Dynamic Programming)이란? 주어진 문제를 풀기 위해서, 문제를 여러 개의 하위 문제(subproblem)로 나누어 푼 다음, 그것을 결합하여 해결하는 방식입니다. 동적 프로그래밍에서는 어떤 부분 문제가 다른 문제들을 해결하는 데 사용될 수 있어, 답을 여러 번 계산하는 대신 한 번만 계산하고 그 결과를 재활용하는 메모이제이션(Memoization) 기법으로 속도를 향상 시킬 수 있습니다. ▶ 동적 프로그래밍(Dynamic Programming)의 두 가지 조건에 대해 말씀해 주세요. 동적 프로그래밍(Dynamic Programming)으로 문제를 해결하기 위해서는 주어진 문제가 다음의 조건을 만족해야 합니다. Overlapping Su..

[기술면접] 알고리즘 - 1/2 (6개 정렬 알고리즘)

😎 시간복잡도를 빅오표기법으로 나타내시오. 😎 거품 정렬, 버블정렬 (Bubble Sort) 서로 인접한 두 원소의 대소를 비교하고, 조건에 맞지 않다면 자리를 교환하며 정렬하는 알고리즘입니다. 가장 쉬운 정렬 알고리즘이지만 시간복잡도가 좋은 퍼포먼스를 내지 못해서 실제로는 잘 사용되지 않습니다. 시간복잡도는 O(n²)이며 공간복잡도는 하나의 배열만 사용하여 정렬을 진행하기 때문에 O(n)입니다. 정렬이 돼있던 안돼있던, 2개의 원소를 비교하기 때문에 최선, 평균, 최악의 경우 모두 시간복잡도가 O(n²)으로 동일하다. 과정(오름차순) 1회전에 첫 번째 원소와 두 번째 원소를, 두 번째 원소와 세 번째 원소를, 세 번째 원소와 네 번째 원소를, … 이런 식으로 (마지막-1) 번째 원소와 마지막 원소를 비..

[기술면접] 자료구조 - 2/2

1편에 이어서 작성해 보겠습니다. 😎 해시 테이블(Hash Table)과 시간 복잡도에 대해 설명해주세요. 해시 테이블은 (Key, Value)로 데이터를 저장하는 자료구조 중 하나로 빠르게 데이터를 검색할 수 있는 자료구조입니다. 빠른 검색 속도를 제공하는 이유는 내부적으로 배열(버킷)을 사용하여 데이터를 저장하기 때문입니다. 각 Key값은 해시함수에 의해 고유한 index를 가지게 되어 바로 접근할 수 있으므로 평균 O(1)의 시간 복잡도로 데이터를 조회합니다. 하지만 index값이 충돌이 발생한 경우 Chanining에 연결된 리스트들까지 검색해야 하므로 O(N)까지 증가할 수 있습니다. ▶ 결국 데이터가 많아지면, 다른 데이터가 같은 해시 값으로 충돌 나는 현상이 발생하는데도 해시 테이블을 사용하..

[기술면접] 자료구조 - 1/2

😎 Array(List)의 가장 큰 특징과 그로 인해 발생하는 장점과 단점에 대해 설명해 주세요. Array의 가장 큰 특징은 순차적으로 데이터를 저장한다는 점입니다. 데이터에 순서가 있기 때문에 0부터 시작하는 index가 존재하며, index를 사용해 특정 요소를 찾고 조작이 가능하다는 것이 Array의 장점입니다. 순차적으로 존재하는 데이터의 중간에 요소가 삽입되거나 삭제되는 경우 그 뒤의 모든 요소들을 한 칸씩 뒤로 밀거나 당겨줘야 하는 단점도 있습니다. 이러한 이유로 Array는 정보가 자주 삭제되거나 추가되는 데이터를 담기에는 적절치 않습니다. ▶ Array를 적용시키면 좋을 데이터의 예를 들어주세요. Array를 적용하면 좋은 이유, 그리고 Array를 사용하지 않으면 어떻게 되는지 함께 설..

[기술면접] 운영체제 - 2/2

1편에 이어서 작성하겠습니다. ⭐ 데드락(DeadLock) 이란? 데드락(DeadLock) 또는 교착상태란 한정된 자원을 여러 프로세스가 사용하고자 할 때 발생하는 상황으로, 프로세스가 자원을 얻기 위해 영구적으로 기다리는 상태입니다. ▶ 데드락의 4가지 조건에 대해 설명해 주세요. 1. 상호 배제(Mutual Exclusion) : 한 번에 한 프로세스만 공유 자원에 접근 가능합니다. 2. 점유 대기 (Hold & Wait) : 공유 자원에 대한 접근 권한을 가진 채로 다른 자원에 대한 접근 권한을 요구. 3. 비선점 (Nonpreemptive) : 다른 프로세스의 자원을 뺏을 수 없음. 4. 순환 대기 (Circular wait) : 두 개 이상의 프로세스가 자원 접근을 기다릴 때, 관계가 순환적 구..

[기술면접] 운영체제 - 1/2

이미 정리해 둔 운영체제 기술면접 Q&A가 있지만 (욕심부려서.. 이번에는) 다른 분들이 정리해 두신 글을 참고하면서 리마인드 하고자 합니다. 😎 운영 체제(OS, Operating System) 하드웨어를 관리하고, 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 응용 프로그램과 하드웨어 간의 인터페이스로써 다른 응용 프로그램이 유용한 작업을 할 수 있도록 환경을 제공해 주는 소프트웨어입니다. (종류: Windows, Linux, UNIX, MS-DOS 등이 있습니다.) ▶ 운영체제의 역할을 간단하게 말씀해주세요. 1. 프로세스 관리 프로세스, 스레드 스케줄링 동기화 IPC 통신 2. 저장장치 관리 메모리 관리 가상 메모리 파일 시스템 3. 네트워킹 TCP/IP 기타 프로토콜 4. 사용자 관리 계정 관리..

[운영체제] 교착 상태(데드락, Deadlock) - 5/5

교착 상태 (데드락, Deadlock) 둘 이상의 프로세스가 다른 프로세스가 점유하고 있는 자원을 서로 기다릴 때 무한 대기에 빠지는 상황을 일컫습니다. 교착상태를 해결하는 것도 운영체제의 중요한 역할입니다. 교착 상태가 발생했을 때 해결하기 위해선 두 단계의 작업이 필요합니다. 1. 교착 상태가 발생했을 때의 상황을 정확히 표현할 줄 알아야 합니다. 2. 교착 상태가 일어나는 근본적인 이유를 확인합니다. 교착 상태 상황 확인 자원 할당 그래프 교착 상태가 왜 발생하는지 대략적으로 파악할 수 있습니다. 어떤 프로세스가 어떤 자원을 할당받아 사용 중인지 확인 가능 어떤 프로세스가 어떤 자원을 기다리고 있는지 확인 가능 그리는 방법은 매우 쉽습니다. 첫째, 프로세스는 원으로 자원의 종류는 사각형으로 표현합니..

[운영체제] 프로세스와 스레드의 동기화 - 4/5

⭐ 동기화 동시다발적으로 실행되는 프로세스, 스레드는 서로 협력하며 영향을 주고받습니다. 이 과정에서 자원의 일관성을 보장해야 하는데, 이때 필요한 과정이 동기화입니다. * 프로세스 동기화라고 해도 스레드 또한 동기화 대상입니다. 목차 동기화 정의 동기화가 왜 필요할까 동기화를 하지 않을시 발생하는 문제점 동기화를 위한 도구들 (프로세스) 동기화 정의 동기화는 크게 두 가지를 의미합니다. 실행 순서 제어를 위한 동기화 프로세스들을 올바른 순서대로 실행하기 위한 동기화 상호 배제를 위한 동기화 동시에 접근해서는 안 되는 자원에 하나의 프로세스만 접근하게 하는 동기화 실행 순서 제어를 위한 동기화 발생하는 동기화 문제 : reader writer problem 두 프로세스가 있다고 가정하겠습니다. 하나는 W..