전체 글(185)
-
블로그 이전
블로그의 전체적인 글도 다시 정리하여 글을 작성하고 새로운 마음으로 다시 시작하기 위해 블로그를 이전합니다. 이전 블로그 주소: https://velog.io/@recfli/posts
2024.06.18 -
CS 면접 준비 - 네트워크(지속 업데이트 예정)
1. RestAPI에 관해서 설명을 해주세요. Restful한 API를 말합니다. Restful한 설계라는 것은 URI를 통해 자원을 명시하고, HTTP Method를 통해 해당 자원에 대한 처리를 표시하는 것을 의미합니다. 그래서 리소스는 최대한 명사형태로 나타내고, 슬래시 구분자를 계층 나타내는데 사용과 같은 여러 규칙을 가지고 있습니다. 이러한 구조는 서버-클라이언트 구조의 시스템에서 유용합니다. ※ Post와 Get의 차이는 무엇인가요? Get은 해당 자원에 대해 데이터를 가져오는 것을 Post는 특정 행위를 수행한다는 의미로 사용됩니다. 주요한 차이는 Get은 멱등성을 가지고 있어서 재 요청을 해도 동일한 응답을 내보냅니다. 그렇기 때문에, 캐싱을 하여 불필요한 요청을 제한합니다. 반대로 Po..
2024.06.06 -
CS 면접 준비 - Java(지속 업데이트 예정)
1. Java에 관해서 설명해주세요. Java 언어의 이념은 "Write Once Run Anywhere"입니다. 이 이념에는 운영체제에 대해서 종속적이지 않아. 프로그래머가 코드를 한번만 작성하면 플랫폼에 관계없이 동작할 수 있게 만들겠다는 의미가 담겨있습니다. 그래서 Java에서는 운영체제별 JRE와 가상머신인 JVM을 가지고 있습니다. 운영체제별 JRE로 JVM용 바이트 코드를 생성하면 JVM 머신에서 해당 바이트 코드가 작동되게 됩니다. 이를 통해 운영 체제에 종속적이지 않은 코드를 만들 수 있게 도와줍니다. 참고 가능 자료: https://intellectum.tistory.com/81 2. 오버로딩과 오버라이딩에 관해서 설명해주세요. 오버로딩은 동일한 이름을 가진 메서드의 타입이나 파라미터..
2024.06.05 -
CS 면접 준비 - Java, Spring 백엔드(지속 업데이트 예정)
1. Spring Framework에 관해서 설명해주세요. 스프링 프레임워크는 엔터프라이즈급 시스템을 쉽게 구추갛기 위한 프레임워크입니다. 객체지향에 관해 공부를 하다보면, 상속으로 기능을 추가하는 경우 추후 구조 변경의 어려움이 발생합니다. 따라서, 필요한 기능을 조립해서 사용하는데, 조립을 사용하더라도 프로그래머가 직접적으로 조립을 하면 코드 수정이 많아집니다. 그러기 때문에 스프링 프레임워크에서는 스프링 컨테이너를 통해서 이 문제를 해결하며, 스프링 컨테이너가 지원하는 기능은 수동으로 혹은 자동으로 프로그래머가 등록한 객체를 싱글톤으로 생성, 애플리케이션 초기화 시점에 수정자와 생성자와 같은 방식으로 된 객체를 찾아 조립하는 역할을 합니다. 또한, 이는 프로그래머가 아닌 스프링 자체에 대해서 ..
2024.06.05 -
CS 면접 준비 - 운영체제(지속 업데이트 예정)
1. 프로세스와 쓰레드의 차이 프로세스와 쓰레드의 가장 큰 차이는 메모리의 차이라고 생각합니다. 프로세스는 개별적으로 Data, Heap, Stack, Code 영역을, 쓰레드는 Stack 영역을 가집니다. 이러한 차이는 멀티 프로세스, 쓰레드 환경에서의 차이로 이어집니다. 프로세스는 서로 간의 데이터를 전송하기 위해서 소켓 혹은 파이프라인과 같은 방식으로 접근을 해야 하는데, 이는 복잡하고 느립니다. 반면 쓰레드는 공유하고 있는 메모리 영역이 있기 때문에 해당 영역으로 데이터를 주고 받으면 돼서 빠릅니다. 그래서 데이터를 나눠서 처리해야 하는 멀티 쓰레드를 통해서 작업을 합니다. ※ 꼬리 질문그럼, 무조건 쓰레드가 좋은 걸까요? 아니요, 쓰레드가 좋지 않을 수도 있습니다. 우리가 코드를 작성할 때 a..
2024.06.05 -
CS 면접 준비 - 알고리즘(지속 업데이트 예정)
1. 정렬 알고리즘에 관해서 설명을 해주세요. 정렬 알고리즘은 특정한 기준에 따라 정렬하여 후의 탐색과정을 편하게 하기 위해 사용합니다. 정렬 알고리즘에는 버블 정렬, 선택 정렬, 삽입 정렬 같은 간단하지만, 시간 복잡도가 n^2인 정렬 방식이 있고, 분할 정복을 활용한 퀵 정렬, 병합 정렬, 힙정렬과 같은 nlogn인 정렬 방식이 있습니다. ※ 그러면, 병합 정렬이나 퀵 정렬이 가장 빠른가요? 단점은 없나요? 시간 복잡도가 삽입 정렬의 경우에는 이미 정렬이 된 경우 가장 빠르고 반대로 병합이나 퀵정렬에서는 느립니다. 하지만 일반적인 경우에는 빠릅니다. 그리고 공간 복잡도가 상대적으로 큽니다. 메모리가 중요한 경우에는 병합정렬이나 퀵 정렬보다는 원소의 개수만큼만 사용하는 삽입 정렬을 고려해야한다 생각..
2024.05.29