반응형

CS 12

[CS] CS 면접 대비 : 자료구조 3

기술면접 예상 질문 및 답변 Hash 충돌 회피 방법에 대해서 설명해주세요. Hash 충돌 회피 방법으로, open addressing, double hashing, chaining 등이 있습니다. open addressing은 Hash 충돌이 일어났을 경우 순차적으로 비어있는 버킷을 확인해 저장하는 방법이고, double hashing은 종류가 다른 해시함수를 추가로 계산해서 해당 하는 인덱스에 저장하는 방법입니다. chaining은 버킷을 lineked list로 구성하여 충돌이 일어났을 경우 list에 추가 해주는 방법입니다. chaining 회피 방법의 단점에 대해서 설명해주세요. 충돌로 인해 한 버킷에만 자료들이 리스트에 추가된다면, 최악의 경우 조회 시간복잡도가 O(n)이 됩니다. Priori..

CS/자료구조 2022.07.20

[CS] CS 면접 대비 : 자료구조 2

기술면접 예상 질문 및 답변 자바에서 Hash Table과 Hash Map의 차이 자바에서 해시 테이블은 키가 같은 값을 두번 이상 넣으면 초기 값을 유지하고, 해시 맵은 나중에 들어간 값으로 덮어버린다는 차이가 있습니다. 그리고 해시 테이블은 thread-safe 하지만, 해시맵은 thread-safe하지 않기 때문에 멀티 스레드 환경이 아니라면 해시 테이블이 해시 맵보다 성능이 떨어진다는 특징이 있습니다. 또한 해시 테이블은 key에 null을 허용하지 않지만, 해시 맵은 key에 null을 허용합니다. HashMap, TreeMap, LinkedHashMap 공통점과 차이점 hashmap은 내부적으로 쌍을 갖는 entry 배열로 되어 있습니다. 따라서 검색 성능이 O(1)로 가장 좋습니다. 해당 배..

CS/자료구조 2022.07.20

[CS] CS 면접 대비 : 자료구조 1

기술면접 예상 질문 및 답변 LinkedList와 ArrayList의 차이점에 대해 설명하세요. LinkedList는 내부적으로 양방향 연결리스트로 구성되어 있습니다. 따라서 원소를 양방향 순회가 가능합니다. 또한 데이터 삽입/삭제 시 가리키는 주소값만 변경해주면 되기 때문에 시간 복잡도가 O(1)로 매우 효율적입니다. 그러나 순차적 접근이기 때문에 조회 속도가 느리다는 단점이 있습니다. 반면에 ArrayList는 기본적으로 배열을 사용하고 있습니다. 배열 기반이므로 인덱스를 가지고 있어서 무작위 접근이 가능하기 때문에 조회가 빠르다는 장점이 있습니다. 그러나 데이터 삽입/삭제 시 나머지 데이터의 위치를 한 칸씩 이동해야 하기 때문에 비효율적이라는 단점이 있습니다. ArrayList와 Array의 차이점..

CS/자료구조 2022.07.20

[WebSocket] 웹소켓(WebSocket)이란?

웹소켓의 등장 배경 웹소켓이 등장하기 이전에 HTTP를 통해 서버로부터 데이터를 가져오기 위해서는 URL을 통한 요청이 유일한 방법이었습니다. 그렇기 때문에 아이디 중복 확인과 같은 유효성 검사는 서버로 데이터를 보내는 중간 과정에서 새로운 페이지 요청이 필요했습니다. 이후 Ajax 통신이 등장하게 되었습니다. Ajax는 클라이언트에서 XMLHttpRequest 객체를 이용하여 서버에 요청을 보내면 서버가 응답하는 방식입니다. 이는 페이지 요청이 아닌 '데이터 요청'이라 부분적으로 정보를 갱신할 수 있습니다. 사용자의 이벤트로부터 JavaScript는 사용자가 작성한 값이 쓰인 DOM을 읽습니다. XMLHttpRequest 객체를 통해 웹서버에 해당 값을 전송합니다. 웹서버는 요청을 처리하고 XML, T..

CS 2022.06.28

has-thumbnail="1" style="background-image:url('https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDzSE8%2FbtrFKmjhjyx%2FimhGxztpsQEnJMTfPM8dr0%2Fimg.png')"

[WebRTC] WebRTC란?

WebRTC란? WebRTC는 Web Real-Time Communication의 약자입니다. 웹/앱(안드로이드, iOS) 등에서 다른 소프트웨어 없이 카메라, 메이크 등을 이용해서 실시간 커뮤니케이션을 할 수 있도록 하는 기술입니다. 화상통화나 화상 공유 등을 구현할 수 있는 오픈소스를 JavaScript API로 제공합니다. 비디오, 음성 및 일반 데이터가 P2P 방식으로 전송되도록 지원해줍니다. MDN의 WebRTC 문서에서는 'WebRTC는 웹 애플리케이션과 사이트가 중간자 없이 브라우저 간에 오디오나 영상 미디어를 포착하고 마음대로 스트림할 뿐 아니라, 임의의 데이터도 교환할 수 있도록 하는 기술'이라고 정의하고 있습니다. https://developer.mozilla.org/ko/docs/We..

CS 2022.06.27

[네트워크] 프로토콜(protocol)이란?

프로토콜(protocol)의 정의 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고받는 양식과 규칙의 체계입니다. 프로토콜(protocol)의 구성 1. 물리적 측면 자료 전송에 쓰이는 전송 매체, 접속용 단자 및 전송 신호, 회선 규격 등(물리 계층, 데이터 링크 계층, 네트워크 계층) 2. 논리적 측면 프레임(frame) 구성, 프레임 안에 있는 각 항목의 뜻과 기능, 자료 전송의 절차 등(전송 계층, 세션 계층, 표현 계층, 응용 계층) 폐쇄적인 프로토콜 : 자사 장치들끼리 통신하기 위한 독자적인 통신 규약이며, 자세한 규격이 공개되어 있지 않아서 크래킹 위협에 상대적으로 안전합니다. IBM의 SNA, SDLC 프로토콜 공개된 범용 프로토콜 : 여러 장치들에 쓰이는 널리 알려진 규격이며, 규격이 널..

CS/네트워크 2022.05.28

has-thumbnail="1" style="background-image:url('https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUzczs%2FbtriXCnmwPo%2FqZNFrJe2HSas3MRKKEfD01%2Fimg.png')"

[Python] 해쉬 테이블(Hash Table)

대표적인 데이터 구조 : 해쉬 테이블(Hash Table) 1) 해쉬 구조 Hash Table은 키(Key)에 데이터(Value)를 저장하는 데이터 구조입니다. Key를 통해 바로 데이터를 받아올 수 있으므로 속도가 획기적으로 빨라짐 파이썬 딕셔너리(Dictionary) 타입이 해쉬 테이블의 예 : Key를 가지고 바로 데이터(Value)를 꺼냄 보통, 배열로 미리 Hash Table 사이즈만큼 생성 후에 사용(공간과 탐색 시간을 맞바꾸는 기법). 단, 파이썬에서는 딕셔너리 타입을 사용하면 되므로 해쉬를 별도로 구현할 이유가 없음 2) 알아둘 용어 -해쉬(Hash) : 임의의 값을 고정 길이로 변환하는 것 -해쉬 테이블(Hash Table) : 키 값의 연산에 의해 직접 접근이 가능한 데이터 구조 -해싱..

CS/자료구조 2021.10.28

has-thumbnail="1" style="background-image:url('https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb054dl%2FbtriZsjIbg9%2FEN0jl4B9tFXQlAecVgGze0%2Fimg.png')"

[Python] 시간복잡도-알고리즘 복잡도 표현 방법

알고리즘 복잡도 표현 방법 1) 알고리즘 복잡도 계산이 필요한 이유 하나의 문제를 푸는 알고리즘은 다양할 수 있는데, 다양한 알고리즘 중 어느 알고리즘이 더 좋은지를 분석하기 위해 복잡도를 정의하고 계산함 2) 알고리즘 복잡도 계산 항목 시간 복잡도 : 알고리즘 실행 속도 공간 복잡도 : 알고리즘이 사용하는 메모리 사이즈 ※가장 중요한 시간 복잡도를 꼭 이해하고 계산할 수 있어야 함※ 알고리즘 시간 복잡도의 주요 요소는 반복문입니다. 입력의 크기가 커지면 커질수록 반복문이 알고리즘 수행 시간을 지배합니다. 3) 알고리즘 성능 표기법 -Big O(빅-오) 표기법 : O(N) 알고리즘 최악의 실행 시간을 표기 가장 많이/일반적으로 사용함 아무리 최악의 상황이라도 이 정도의 성능은 보장한다는 의미 -Ω(오메가..

CS/자료구조 2021.10.26

has-thumbnail="1" style="background-image:url('https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJq0HT%2FbtriGkIijt9%2FMNynYyS6eykl0oOqdzo5a1%2Fimg.png')"

[Python] 링크드 리스트(Linked List)

대표적인 데이터 구조 : 링크드 리스트(Linked List) 1) 링크드 리스트(Linked List) 구조 -연결 리스트라고도 함 -배열은 순차적으로 연결된 공간에 데이터를 나열하는 데이터 구조인데, 링크드 리스트는 떨어진 곳에 존재하는 데이터를 화살표로 연결해서 관리하는 데이터 구조이다 -본래 C언어에서는 주요한 데이터 구조이지만, 파이썬은 리스트 타입이 링크드 리스트의 기능을 모두 지원 -링크드 리스트 기본 구조와 용어 노드(Node) : 데이터 저장 단위(데이터값, 포인터)로 구성 포인터(pointer) : 각 노드 안에서 다음이나 이전의 노드와의 연결 정보를 가지고 있는 공간 -일반적인 링크드 리스트 형태 2) 간단한 링크드 리스트 예 1. Node 구현 보통 파이썬에서 링크드 리스트 구현시 ..

CS/자료구조 2021.10.26

has-thumbnail="1" style="background-image:url('https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fo4iPj%2FbtriKx0Y1lU%2FVko0Knz5NeASq4SqlKL4YK%2Fimg.png')"

[Python] 스택(Stack)

꼭 알아둬야 할 자료구조 : 스택(Stack) -데이터를 제한적으로 접근할 수 있는 구조 한쪽 끝에서만 자료를 넣거나 뺄 수 있는 구조 -가장 나중에 쌓은 데이터를 가장 먼저 빼낼 수 있는 데이터 구조 큐 : FIFO 정책 스택 : LIFO 정책 1) 스택 구조 -스택은 LIFO(Last-In, First-Out) 또는 FILO(First-In, Last-Out) 데이터 관리 방식을 따름 LIFO : 마지막에 넣은 데이터를 가장 먼저 추출하는 데이터 관리 정책 FILO : 처음에 넣은 데이터를 가장 마지막에 추출하는 데이터 관리 정책 -대표적인 스택의 활용 컴퓨터 내부 프로세스 구조의 함수 동작 방식 -주요 기능 push() : 데이터를 스택에 넣기 pop() : 데이터를 스택에서 꺼내기 ※참고※ htt..

CS/자료구조 2021.10.25
반응형