IT 시사 및 CS 지식
[CS스터디]220704 자료구조 - 1
시간 복잡도란? 반복문을 몇 번 사용했는지 등을 통해 알고리즘이 문제를 해결하기 위한 시간(연산)의 횟수. 즉, 우리는 입력값과 연산 수행 시간의 상관관계를 나타내는 척도를 시간 복잡도라고 한다. 배열과 링크드 리스트의 차이를 설명해주세요. LinkedList와 ArrayList는 모두 Java에서 제공하는 List 인터페이스를 구현한 Collection 구현체. ArrayList 내부적으로 데이터를 배열로 관리하고 데이터 추가/삭제 시 임시 배열을 생성해 데이터를 복사함 데이터별 인덱스가 있어 검색에는 유리O(1) 임시 배열을 사용하기 때문에 데이터 추가/삭제의 경우에는 불리O(n) LinkedList 내부적으로 노드 단위로 데이터를 관리합니다. 자신의 앞 뒤 노드만 인지하는 상태임. 인덱스가 따로 없..
[CS스터디]220624 네트워크 - 3
RESTful이란 무엇이며, 이것에 대해서 아는대로 설명해보세요. RESTful은 일반적으로 REST라는 아키텍처를 구현하는 웹 서비스를 나타내기 위해 사용되는 용어이다. ‘REST API’(REST 기반으로 서비스 API를 구현한 것)를 제공하는 웹 서비스를 ‘RESTful’하다고 할 수 있다. RESTful은 REST를 REST답게 쓰기 위한 방법으로, 누군가가 공식적으로 발표한 것이 아니다. 즉, REST 원리를 따르는 시스템은 RESTful이란 용어로 지칭된다. CORS란 무엇이며 이것에 대해서 설명해보세요. CORS는 Cross-Origin Resource Sharing임. 브라우저에서는 보안적인 이유로 cross-origin HTTP 요청들을 제한함. 그래서 cross-origin 요청을 하려..
[CS스터디]220623 네트워크 - 2
HTTP와 HTTPS의 차이점에 대해서 설명해보세요. HTTP(Hypertext Transfer Protocol) 네트워크를 통해서 데이터를 전송하는데에 사용하는 protocol이다. 인터넷의 거의 대부분의 정보(웹 컨텐츠나 API 등)들은 이 HTTP를 사용한다. HTTP messages 에는 2 종류가 있다 -> request(요청)과 response(응답) HTTP requests all go to either an origin server or a proxy caching server, and that server will generate an HTTP response. HTTP responses are answers to HTTP requests. HTTP는 layer 7 protocol이다! ..
[CS스터디]220621 네트워크 - 1
웹 통신의 큰 흐름: https://www.google.com/ 을 접속할 때 일어나는 일 사용자가 웹 브라우저에서 www.google.com을 주소창에 입력하면 웹 브라우저에서는 www.google.com 도메인에 대한 실제 IP 주소를 DNS에 조회 실제 IP 주소를 이용해서 서버의 80 포트를 통해 서비스를 제공하는 웹 서버에 해당 도메인에 대한 웹 컨텐츠를 요청 웹 서버는 웹 브라우저를 위한 별도의 포트에 소켓을 개설 4번의 소켓은 웹 브라우저와 연결 웹 서버는 요청 받은 컨텐츠를 웹 브라우저로 보냄 TCP와 UDP의 차이점에 대해서 설명해보세요. TCP(Transmission Control Protocol) 전송을 제어하는 프로토콜 인터넷상에서 데이터를 메세지의 형태로 보내기 위해 IP와 함께 ..
[CS스터디]220617 데이터베이스 - 2
정규화에 대해서 설명해주세요. 기본적으로 데이터의 무결성(Integrity)를 유지하기 위한 행위이다. (여기서 무결성이란 정확성과 일관성을 유지하는 것이다!) 그러기 위해서 테이블 간의 중복된 데이터를 허용하지 않는다. 제 1 정규화 테이블의 컬럼이 원자값(Atomic Value, 하나의 값)을 갖도록 태이블을 분해하는 것 제 2 정규화 완전 함수 종속을 만족하도록 테이블을 분해하는 것 기본키의 부분집합이 결정자가 되어선 안됨. 제 3 정규화 이행적 종속을 없애도록 테이블을 분해하는 것 BCNF 정규화(Boyce-Codd Normal Form) 모든 결정자가 후보키가 되도록 테이블을 분해하는 것 https://www.youtube.com/watch?v=pMcv0Zhh3J0 자격증 딸 때 참고했던 영상 ..
[CS스터디]220616 데이터베이스 - 1
데이터베이스에서 인덱스를 사용하는 이유 및 장단점에 대해 설명해주세요. 인덱스(INDEX)란? 테이블에 대한 동작의 속도를 높여주는 자료 구조 인덱스는 테이블 내의 1개 혹은 여러 개의 컬럼을 이용하여 생성 고속의 검색 동작 뿐만 아니라 레코드 접근과 효율적인 순서 매김 동작에 대한 기초를 제공 검색이 잦은 컬럼에 인덱스를 생성하는게 보통이다. 장점 빠르게 검색가능 단점 검색(R)만 빠름, 나머지 CUD는 느려질 수 있음 추가 저장 공간 필요 인덱스를 생성하고 주기적으로 관리할 인력과 시간이 들어감 트랜잭션에 대해서 설명해주세요. 데이터베이스의 상태를 변경시키기 위해 수행하는 작업의 단위 트랜잭션의 특징으로 ACID가 있다. ACID에 대해서 설명해주세요. 원자성(Atomicity) 트랜잭션이 데이터베이..
[CS스터디]220615 스프링의 장점
스프링의 장점 경량 프레임 워크 스프링은 여러 개의 모듈로 구성되어 있으며, 각 모듈은 하나 이상의 JAR 파일로 구성됨. 몇 개의 JAR 파일만 있으면 개발과 실행이 가능하다. POJO 기반의 구성 스프링 프레임워크가 POJO(Plain Old Java Object) 형태의 객체를 관리함 개발자가 특정한 라이브러리나 컨테이너의 기술에 종속적이지 않음을 의미한다. Java 코드를 이용해서 객체를 구성하는 방식 그대로 스프링에서 사용할 수 있다. 덕분에 자유롭게 객체지향적 설계를 구현할 수 있다. 개발자는 가장 일반적인 형태로 코드를 작성하고 실행할 수 있다. 때문에 높은 생산성과 유연한 테스트를 할 수 있다는 장점을 가지게 된다. Java의 객체지향적인 특징을 살려 비즈니스 로직에 충실한 개발이 가능하도..
[CS스터디]220613 컴파일러, 패턴, Web
스크립트 언어와 컴파일 언어를 나열하고 차이점을 설명해주세요. 스크립트 언어 Python, Javascript 등의 언어는 별도의 파일 생성없이 소스 코드가 작성될 때마다 인터프리터가 해당 코드를 기계어로 번역하고 실행함! 얘네를 인터프리터 언어 또는 스크립트 언어라고 부름 실행 전 소스코드를 컴파일하여 기계어로 변환 후 해당 파일을 실행 이미 기계어로 변환된 것을 실행하므로 비교적 빠름 컴파일을 하지 않고 바로 실행한다는 특징이 있지만, 소스 코드를 읽으며 실행하기 때문에 프로그램의 실행 시간은 느림 문법적 제약이 일반적으로 많음 운영체제에 따라 다르게 작업해야 함 컴파일 언어 C, C++, Java 등의 언어는 코드를 작성한 후 컴파일을 하면 컴파일러에 의해 기계어로 변환된 파일이 생성되고 컴퓨터는 ..