분류 전체보기
-
[네트워크] 기술면접 스터디 예상 질문 및 답변기술면접 스터디 2024. 5. 11. 16:21
1. HTTP 메서드 중 GET과 POST의 차이점은 무엇인가요?→ GET 방식은 클라이언트에서 서버로 어떤 자원을 요청하기 위해 사용하는 메서드이며, POST방식은 클라이언트에서 서버로 자원을 저장하기 위해 데이터를 보낼 때 사용하는 메서드 입니다.GET은 요청 메시지에 body가 없지만, POST는 body에 데이터를 담아 보냅니다. 이러한 GET 요청은 몇번을 요청해도 결과가 똑같지만, POST는 여러 번 요청하면 리소스가 새로 생성되거나 업데이트 되기 때문에 멱등이 아닙니다. 2. HTTP와 HTTPS에 대해 설명하세요.→ HTTP란 인터넷 상에서 클라이언트와 서버가 자원을 주고받을 때 사용하는 통신 규약입니다. HTTP는 누군가 네트워크에서 신호를 가로채면 내용이 노출되는 보안이슈가 발생할 수..
-
[Data Structure] Tree, BST(Binary Search Tree; 이진 탐색 트리) / Hash Table(해시 테이블), 해시 함수, 해시 충돌과 해결 방법기술면접 스터디 2024. 4. 29. 12:47
3. Tree 자료구조에 대해 설명하세요.트리는 계층적 데이터를 나타내는 노드들의 집합입니다. 노드와 간선으로 이루어진 비선형 자료구조로 무방향이면서 사이클이 없는 그래프입니다. 트리의 가장 중요한 속성은 ‘루트노드를 제외한 모든 노드는 단 하나의 부모노드를 갖는다.’는 것입니다. 각 노드가 갖는 자식의 수를 차수(degree)라고 하는데, 이때 모든 노드의 차수가 n이하인 트리를 n진 트리라고 합니다. 만약 모든 노드의 자식이 2개 이하면 이진 트리입니다.3-1. 이진 탐색 트리(BST, Binary Search Tree)의 특징과 시간 복잡도에 대해 설명하세요.이진 탐색 트리는 노드 기반의 이진 트리 자료구조로, 각 노드는 키와 최대 두 개의 자식 노드를 가집니다. 모든 노드는 왼쪽 자식 트리에 있는..
-
[Data Structure] Array, LinkedList / Stack, Queue, Priority Queue(우선순위 큐) / Heap(힙), heapq 모듈기술면접 스터디 2024. 4. 29. 12:44
1. Array와 LinkedList에 대해 설명하세요배열 (Array): 배열은 동일한 타입의 요소들을 연속적인 메모리 공간에 저장하는 자료구조입니다. 배열은 고정된 크기를 가지며, 배열의 각 요소는 인덱스를 통해 직접 접근할 수 있습니다. 이러한 특성 때문에 배열에서의 요소 접근(검색)은 매우 빠르게 이루어져 O(1)의 시간복잡도를 가집니다. 그러나 배열은 크기가 고정되어 있어, 배열의 크기를 변경하려면 전체 배열을 새로운 크기의 배열로 복사하는 과정이 필요하며, 이는 비용이 많이 드는 작업입니다. 또한, 배열의 중간에 요소를 삽입하거나 삭제하는 경우, 해당 요소 이후의 모든 요소들을 이동시켜야 하므로 비효율적입니다.연결 리스트 (Linked List): 연결 리스트는 요소들이 메모리상에서 연속적으로..
-
[Python] 백준 1339 단어 수학 - 그리디 알고리즘 / enumerate(), set(), extend(), Counter()Algorithm 2024. 4. 28. 17:56
enumerate(): 파이썬에서 for문을 사용할 때 인덱스와 원소의 값을 같이 얻을 수 있는 내장함수 set(): 파이썬에서 배열(리스트)에서 중복된 원소를 제거하고, 각 원소의 고유값을 얻으려면 set 데이터 타입을 사용할 수 있습니다. set은 중복을 허용하지 않으므로, 리스트를 set으로 변환하면 자동으로 중복된 원소가 제거됩니다. 그 후, 필요에 따라 다시 리스트로 변환할 수 있습니다. extend(): 파이썬의 extend() 메소드는 리스트에 다른 iterable(예: 리스트, 튜플, 집합 등)의 모든 항목을 추가하는 데 사용됩니다. 이 메소드는 원본 리스트를 직접 수정합니다. Counter(): Counter는 Python의 collections 모듈에서 제공하는 특수한 딕셔너리 서..
-
[Data Structure] Array vs LinkedList기술면접 스터디 2024. 4. 23. 19:47
배열 (Array) : 배열은 동일한 타입의 요소들을 연속적인 메모리 공간에 저장하는 자료구조입니다. 배열은 고정된 크기를 가지며, 배열의 각 요소는 인덱스를 통해 직접 접근할 수 있습니다. 이러한 특성 때문에 배열에서의 요소 접근(검색)은 매우 빠르게 이루어집니다. O(1)의 시간복잡도를 가집니다. 그러나 배열은 크기가 고정되어 있어, 배열의 크기를 변경하려면 전체 배열을 새로운 크기의 배열로 복사하는 과정이 필요하며, 이는 비용이 많이 드는 작업입니다. 또한, 배열의 중간에 요소를 삽입하거나 삭제하는 경우, 해당 요소 이후의 모든 요소들을 이동시켜야 하므로 비효율적입니다. 연결 리스트 (Linked List) : 연결 리스트는 요소들이 메모리상에서 연속적으로 위치하지 않고, 각 요소가 당므 요소의 주..
-
[Design Pattern] 개발 디자인 패턴기술면접 스터디 2024. 4. 17. 16:24
Design Pattern 개발 디자인 패턴이란? : 개발 디자인 패턴은 소프트웨어 설계 과정에서 자주 발생하는 문제들을 해결하기 위해 일반화된 재사용 가능한 솔루션을 제공한다. 이러한 패턴은 특정 문제를 해결하는 방법론으로, 코드를 더욱 유지보수하기 쉽고 확장 가능하며 효율적으로 만들 수 있도록 도와준다. 디자인 패턴은 소프트웨어 엔지니어링의 베스트 프랙티스로 여겨지며 개발 과정을 가속화하고 복잡한 설계 문제를 보다 쉽게 해결할 수 있게 한다. 생성 패턴 (Creational Patterns) 생성 패턴은 객체 생성 메커니즘을 중심으로 한다, 즉 객체 생성과 관련된 복잡성을 캡슐화하고 클라이언트 코드가 특정 인스턴스가 아닌 인터페이스에 의존하도록 만든다. 이로 인해 시스템의 유연성과 재사용성이 향상된다..
-
[Development common sense] 함수형 프로그래밍, MVC패턴기술면접 스터디 2024. 4. 16. 18:59
함수형 프로그래밍 함수형 프로그래밍이란? : 함수형 프로그래밍(Functional Programming, FP)은 프로그래밍 패러다임 중 하나로, 계산을 수학적 함수의 평가로 간주하고 상태 변경이나 가변 데이터를 피하는 것을 강조한다. 이 패러다임은 side effect를 최소화하여 프로그램의 동작을 이해하고 예측하기 쉽게 만드는 것을 목표로 한다. 함수형 프로그래밍은 Lisp, Haskell, Erlang, Scala, F#, Clojure, Elixir와 같은 언어에서 주로 사용된다. 함수형 프로그래밍의 특징 일급 함수(First-class functions): 함수를 일급 시민으로 취급한다는 의미다. 이는 함수를 변수에 할당할 수 있고, 다른 함수의 인자로 전달하거나, 함수에서 새로운 함수를 만들어..
-
[Development common sense] TDD - 기본 사이클, 장단점, 의문점기술면접 스터디 2024. 4. 16. 17:32
TDD TDD란? : Test-Driven Development(TDD, 테스트 주도 개발)는 소프트웨어 개발 프로세스의 한 방법론으로, 매우 짧은 개발 사이클의 반복에 중점을 둔다. 기본적으로 개발자는 먼저 요구 사항을 충족하는 실패하는 단위 테스트를 작성하고, 이 테스트를 통과하기 위한 최소한의 코드를 작성한 다음, 코드를 개선하는 리팩토링 과정을 거친다. 이러한 과정은 "빨강/녹색/리팩터" 사이클로 알려져 있으며, 다음과 같은 단계로 구성된다. TDD의 기본 사이클 1. 빨강: 실패하는 테스트 작성 개발을 시작하기 전에, 구현해야 할 기능에 대한 테스트 케이스를 먼저 작성한다. 이 테스트는 실패해야 한다. 왜냐하면, 해당 기능의 ㄱ현 코드가 아직 작성되지 않았기 때문이다. 2. 녹색: 테스트를 통과..