전체 글
-
운영체제(Operating System) 정리취업 활동/면접 준비 2021. 1. 1. 15:49
운영체제 - 프로세스와 스레드 프로세스는 실행중인 프로그램이며, 디스크로부터 메모리로 적재되어 CPU의 할당을 받을 수 있습니다. 프로세스는 생성될 때 각각 별도의 주소공간에 할당되며 코드, 데이터, 힙, 스택 영역을 가지고 있습니다. 멀티 프로세스의 장점으로는, 각 프로세스간 독립적으로 동작하기 때문에 서로 영향을 끼치지 않습니다. 단점으로는, 각각 독립된 메모리 영역을 가지고 있어 다른 프로세스와 데이터 공유 간 IPC를 해야 하는 등 오버헤드가 있으며, Context switching에 대한 오버헤드도 존재합니다. 스레드는 프로세스의 실행 단위입니다. 프로세스와 달리 스레드는 다른 스레드와 공간, 자원을 공유합니다. 멀티 스레드의 장점으로는, 전역 변수와 정적 변수에 대한 자료를 공유할 수 있습니다..
-
알고리즘(Algorithm) 정리취업 활동/면접 준비 2021. 1. 1. 15:49
Sort 알고리즘 - Bubble Sort 서로 인접한 두 개의 원소를 비교하고, 조건을 만족하지 않는다면 서로 swap해 가며 정렬하는 알고리즘입니다. Stable sort 입니다. 모든 경우에 대해서 O(n^2)의 시간복잡도를 가집니다. - Selection Sort 위치가 이미 정해져 있고, 어떤 원소를 넣을 지 선택해가며 정렬하는 알고리즘입니다. Unstable sort 입니다. 모든 경우에 대해서 O(n^2)의 시간복잡도를 가집니다. - Insertion Sort 2번째 원소부터 시작하여, 앞에 있는 원소들과 비교해가며 삽입할 위치를 지정한 후, 원소들을 뒤로 옮기고 그 자리에 삽입하여 정렬하는 알고리즘입니다. Stable sort입니다. 최적의 경우 O(n), 최악의 경우O(n^2)의 시간 복..
-
자료구조(Data Structure) 정리취업 활동/면접 준비 2021. 1. 1. 15:49
자료구조 - Array 와 Linked List Array는 index로 해당 원소에 접근할 수 있고, 찾고자 하는 원소의 index 값을 알고 있으면, O(1)에 해당 원소로 접근할 수 있습니다. 즉, Random access가 가능하다는 장점이 있습니다. 하지만, 삽입과 삭제의 경우에는 배열의 연속적인 특징을 위해 shift를 해야 하기 때문에 비용이 발생하며, 최악의 경우 O(n)의 시간 복잡도를 가집니다. Linked List는 이러한 문제를 해결할 수 있습니다. 각각의 원소들은 자기 자신 다음에 어떤 원소인지를 기억하고 있습니다. 따라서 삽입, 삭제 연산을 O(1)만에 해결할 수 있습니다. 그러나 index 값으로 접근을 할 수 없기 때문에 탐색 과정에서 최악의 경우 O(n)의 시간 복잡도를 가..
-
2020 카카오 여름 개발자 인턴 면접취업 활동/면접 준비 2021. 1. 1. 15:48
면접 정리 순서 1. 기본적인 CS 지식 (자료구조, 알고리즘, 운영체제, 네트워크, DB) 2. Java 관련 지식 3. 웹 관련 지식 (스프링, HTTPS, DNS 서버, 세션, 쿠키…) 4. 프로젝트(포트폴리오) 간단히 정리 & 코드 리뷰 1. 기본적인 Computer Science 지식 1) 자료구조 hongchan.tistory.com/42 2) 알고리즘 hongchan.tistory.com/43 3) 네트워크 hongchan.tistory.com/46 4) 운영체제 hongchan.tistory.com/44 5) DB hongchan.tistory.com/45 2. Java 관련 지식 hongchan.tistory.com/47 3. 웹 관련 지식 hongchan.tistory.com/48
-
REST API (스프링 기반 REST API 개발 - 1)Programming/Spring 기반 REST API 2021. 1. 1. 15:48
1. REST - 시스템 제각각의 독립적인 진화를 보장하기 위한 방법 - REST API : REST 아키텍쳐 스타일을 따르는 API 2. self-descriptive messages - 메시지 스스로 메시지에 대한 설명이 가능해야 한다. - 서버가 메시지를 바꾸더라도 클라이언트는 대응 가능 (메시지에 해석하는 방법이 있기 때문에) - 확장 가능한 커뮤니케이션 -> HAL의 링크 데이터에 profile 링크를 추가 (아직 여러 브라우저들이 헤더에 추가하는 방법 이해를 잘 못함) 3. HATEOAS - 링크를 통해 애플리케이션 상태 변화가 가능해야 한다. - 링크 정보를 동적으로 바꿀 수 있다. -> HAL을 통해 링크를 정의 인프런 백기선님 '스프링 기반 REST API 개발’ 강의를 듣고 정리한 내용..
-
스프링 JPA (스프링 데이터 JPA - 7)Programming/Spring Data JPA 2021. 1. 1. 15:48
- @EnableJpaRepositories 스프링 부트를 사용하지 않을 때는 @Configuration과 같이 사용 1. 엔티티 저장하기 - save()호출되면 현재 상태에 따라 persist, merge가 호출됨 Transient상태이면 persist - (create) Detached상태이면 merge - (update, 없으면 create) - Transient인지 Detached인지 어떻게 판단? 엔티티의 @Id프로퍼티를 찾아서 null이면 Transient 상태로 판단함 - EntityManager.persist() 메소드에 넘긴 객체를 Persistent 상태로 변경 - EntityManager.merge() 메소드에 넘긴 객체의 복사본을 만들고, 그 복사본을 다시 Persistent 상태로..
-
스프링 데이터 Common - Web (스프링 데이터 JPA - 6)Programming/Spring Data JPA 2021. 1. 1. 15:47
1. 스프링 Converter - PostController.java @RestController public class PostController { @Autowired PostRepository postRepository; @GetMapping("/posts/{id}") public String getPost(@PathVariable Long id) { Optional byId = postRepository.findById(id); Post post = byId.get(); return post.getTitle(); } } @RestController public class PostController { @GetMapping("/posts/{id}") public Post getPost(@PathVa..