질문 7

2021.12.18 면접 질문 준비(수정필요) - SpringBoot/Spring

Spring Boot 이야기를 하셨는데, Spring Boot와 Spring Framework의 차이점은 무엇인가요? 스프링 부트와 스프링 프레임워크의 가장 큰 차이는 Auto Configuration의 차이인 것 같습니다. 한 예로써 Spring MVC 프로젝트를 Spring Framework 기반으로 구성을 한다면, 컴포넌트 스캔, bean 설정, Dispatcher Servlet 설정, View Resolver, JDBC 설정, 웹 jar 설정 등의 다양한 설정을 해야하지만 이를 Spring Boot 기반으로 구성함으로써 초기 개발 환경 세팅에 걸리는 리소스를 많이 아낄 수 있다고 생각합니다. 스프링 부트 프로젝트를 생성할 시 스프링 부트에서는 내장 서블릿 컨테이너인 톰캣(tomcat)이 자동적으로..

항해99 3기 2021.12.19

2021.12.15 면접 질문 준비(수정필요) - Part 1. 전산 기초 : 데이터베이스

데이터베이스 데이터베이스를 사용하는 이유 데이터베이스가 등장하기 전에는 파일시스템으로 데이터를 관리해 왔는데 파일시스템은 파일마다 같은 내용이 있는 '중복'이나 데이터를 변경하면 변경한 데이터와 연관되어있는 데이터를 모두 수정해야하는 '비일관성' 등 여러가지의 문제점이 있었습니다 이것을 해결하기 위해 데이터베이스가 등장했습니다 데이터베이스 성능 데이터베이스는 하나의 데이터베이스에 여러 응용프로그램이 접근이 가능하기 때문에 데이터의 중복을 최소화할 수 있습니다 또한, 데이터베이스는 한 군데에서 데이터를 관리할 수 있기 때문에 보안성이 향상되고 보안 비용이 절감됩니다 데이터의 무결성? https://yang1650.tistory.com/28 Index Index 란 무엇인가 : 데이터베이스 테이블의 검색 속..

항해99 3기 2021.12.17

2021.12.14 면접 질문 준비(수정필요) - Part 1. 전산 기초 : 운영체제

프로세스 동기화란? 데드락 임계구역 세마포어 루텍스락 메모리 관리 전략 메모리 관리 배경 - 메모리 용량이 증가함에 따라 프로그램의 크기 또한 계속 증가하고 있기 떄문에 메모리는 언제나 부족 - 제한된 물리 메모리의 효율적인 사용과 메모리 참조 방식을 제공하기 위한 전략 해결책으로 나온 방법 중 일부가 paging, segmentation입니다 Paging 프로세스가 저장될 때 논리메모리로 공간관리가 되어 물리메모리에 순서 상관없이 프레임에 매핑된다. 문제점 : 내부 단편화가 심해진다. Segmentation 페이징처럼 같은 논리/물리 메모리 크기로 넣는게 아니라 서로 다른 논리적 단위 세그먼트로 분할하여서 넣는다. 문제점 : 중간에 프로세스가 빠지면 구멍 뚫리면서 외부 단편화가 일어남 https://v..

항해99 3기 2021.12.17

2021.12.13 면접 질문 준비(수정필요) - Part 1. 전산 기초 : 운영체제

프로세스와 스레드의 차이 프로세스: 운영체제로부터 자원을 할당받은 작업의 단위. 스레드: 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위. 운영체제가 프로세스에게 Code/Data/Stack/Heap 메모리 영역을 할당해 주고 최소 작업 단위로 삼는 반면, 스레드는 프로세스 내에서 Stack 메모리 영역을 제외한 다른 메모리 영역을 같은 프로세스 내 다른 스레드와 공유한다. https://velog.io/@raejoonee/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%99%80-%EC%8A%A4%EB%A0%88%EB%93%9C%EC%9D%98-%EC%B0%A8%EC%9D%B4 스케줄러의 종류 장기 스케줄러 단기 스케줄러 중기 스케줄러 CPU 스케줄러 FCFS First C..

항해99 3기 2021.12.17

2021.12.11 면접 질문 준비(수정필요) - Part 1. 전산 기초 : 네트워크

GET, POST 방식의 차이점 GET 방식은 데이터를 쿼리스트링으로 보내며, 전송량에 제한이 있습니다 url에 데이터가 포함되어있기 때문에 사용자에게 데이터가 노출이 됩니다 그리고 브라우저에 캐싱이 가능합니다 POST 방식은 데이터를 HTTP Body에 포함해서 보내며, 전송량에 제한이 없습니다 Body에 포함되어 있기 때문에 사용자에게 데이터가 노출되지 않습니다 그리고 브라우저에 캐싱이 불가능합니다 멱등성? 조회를여러번해도결과는같다 / post는 요청해도 결과는 달라진다 https://preamtree.tistory.com/12 TCP 3-way-handshake 3-way handshake는 신뢰성 있는 통신을 위한 연결을 설정하는 과정입니다. 1. 클라이언트가 SYN 패킷을 서버에 전송 2. 서버..

항해99 3기 2021.12.17

2021.12.10 면접 질문 준비 - Part 1. 전산 기초 자료구조

Array vs Linked List Array는 크기가 고정되어 있으며, 요소들을 인덱스를 통해 바로 접근할 수 있기 때문에 접근할 때 시간 복잡도는 O(1)입니다 또한 삽입이나 삭제를 할 때 빈 자리 이후의 원소들이 자리를 채워야 하기 때문에 시간복잡도는 O(N) 입니다 반면 LinkedList는 크기가 고정되어있지 않으며, 요소를 접근할 때 순차적으로 검색하며 찾아야하기 때문에 시간복잡도는 O(N)입니다 또한 삽입이나 삭제를 할 때 새로운 요소에 할당된 메모리 위치 주소가 LinkedList의 이전 요소에 저장되기 때문에 시간복잡도는 O(1)입니다 https://velog.io/@humblechoi/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-Array-vs-LinkedList..

항해99 3기 2021.12.11

2021.12.09 면접 질문 준비 : Part 1. 전산 기초 개발상식

Part 1. 전산 기초 좋은 코드란 무엇인가? 제가 생각하는 좋은 코드는 '다른 사람들도 읽기 쉬운 코드' 입니다 코드가 개발이 되었으면 유지보수하는 일은 무조건 있기 마련인데 다른 사람들이 코드를 봤을 때 어떤 의도로 만든 코드인지 모른다면 코드를 수정하는 데 시간이 걸리기 때문에 효율적이지 못한 코드이기 때문입니다 다른 사람들도 읽기 쉬운 코드이려면 의미가 포함된 변수명을 사용하고 복잡한 로직일 경우 주석을 적어둬야 합니다 또한 중복되는 로직이 있으면 함수로 만들어 사용해야 합니다 읽기쉽고 중복 없고 테스트하기 좋은 코드 함수명으로도 추측 가능 정상적으로 실행 가능 객체 지향 프로그래밍이란 무엇인가? 프로그램을 단순히 코드의 나열로만 봤던 시각을 벗어나 프로그램을 객체 라는 기본 단위로 나누고 객체..

항해99 3기 2021.12.11