🥸 CS 면접 스터디

    ChatGPT로 공부하는 CS면접 준비 [Ch 2. 데이터 구조]

    (*야간 모드로 보시면 보기 편합니다.) Question. 데이터 구조 질문 10가지를 만들어줘. Answer. 데이터 구조에 관한 면접 질문으로 다음과 같은 10가지 예시를 들어볼 수 있습니다. 1. 배열과 연결 리스트의 차이점은 무엇인가요? 2. 스택과 큐의 차이점은 무엇인가요? 3. 이진 검색 트리와 균형 이진 검색 트리의 차이점은 무엇인가요? 4. 힙(Heap)의 개념과 용도는 무엇인가요? 5. 해시 테이블(Hash Table)의 개념과 장단점은 무엇인가요? 6. 그래프(Graph)의 종류와 특징은 무엇인가요? 7. BFS와 DFS의 차이점과 각각의 특징은 무엇인가요? 8. 트라이(Tri)의 개념과 용도는 무엇인가요? 9. 동적 계획법(Dynamic Programming)의 개념과 예시는 무엇인가..

    ChatGPT로 공부하는 CS면접 준비 [Ch 1. 종류]

    (*야간 모드로 보시면 보기 편합니다.) Question 클라우드 신입 개발자 면접에서 묻는 CS 질문을 알려줘. Answer 클라우드 신입 개발자 면접에서는 컴퓨터 과학 (Computer Science, CS) 지식에 대한 질문도 종종 물어볼 수 있습니다. 1. 데이터 구조(Data Structures) 자료구조의 개념과 특징, 배열, 리스트, 스택, 큐, 트리, 그래프 등에 대한 이해도를 물어볼 수 있습니다. 2. 알고리즘 (Algorithms) 알고리즘의 개념과 종류, 정렬, 탐색, 해시, 그리디 알고리즘, 동적 프로그래밍, 그래프 알고리즘 등에 대한 이해도를 물어볼 수 있습니다. 3. 운영체제(Operating System, OS) 운영체제의 기본 구조와 기능, 프로세스와 스레드, 동기화, 교착상..

    에자일(Agile)이란?

    에자일 또는 에질리티라고도 불리는 이것은 사전적 의미로 1. 날렵한, 민첩한 2. 기민한 이 있습니다. 2001년 2월 캔트 백을 포한한 미국의 소프트웨어 개발자 17명이 미국 유타의 스노우버드 리조트에 모여 애자일 연합을 결성합니다. '상호작용', '소프트웨어 중시', '고객과의 협력', '변화 대응' 등 쉽게 적응하고 유연하게 대처하자라는 것이 이들의 주요 목적이였습니다. Plan-do-see라는 절차에 충실하게 프로젝트를 수행해 왔건만 고객사의 죽 끓는 듯 한 변덕과 버그 하나 잡으려면 결재를 기다려야 하는 갑갑한 현실 속에서 '틴첨하게 반응하고 신속하게 대응한다' '층층시하 결재라인을 받지 않고 실무자가 진행한다' 라는 발상으로 시작되었다고 합니다. 이런 에자일 방법론은 빠른 변화에 대응할 수 있..

    In Memory 데이터베이스란

    데이터베이스란 여러 사람이나 프로그램이 데이터를 쉽게 공유하기 위해 체계적으로 관리되는 데이터의 집합을 말합니다. In-Memory DB란 데이터를 주 메모리(RAM)에 저장하는 데이터베이스의 한 종류입니다. 따라서 인메모리DB는 데이터베이스의 일종이지만, 일반적으로 말하는 데이터베이스는 디스크와 같은 비휘발성 저장소에 데이터를 저장하고, 필요할 때 메모리로 로딩하여 처리하는 방식을 사용합니다. 따라서, 인메모리DB와 일반적인 DB의 가장 큰 차이점은 데이터를 저장하는 위치에 있습니다. 인메모리DB는 데이터를 주 메모리에 저장하여 빠른 속도로 데이터를 처리할 수 있지만, 시스템의 장애나 전원 문제 등이 발생하면 데이터가 손실될 가능성이 있습니다. 반면에 일반적인 DB는 비휘발성 저장소에 제이터를 저장하기..

    JSON(Java Script Object Notation)이란

    인터넷이란 전세계 컴퓨터끼리 숫자, 문자를 쉽게 주고받을 수 있게 도와주는 네트워크입니다. 하지만 인터넷의 발전에 따라 이렇게 주고받는 데이터도 문자와 숫자보다 더 복잡하고 정보량이 많은 데이터를 송신하고 싶어 집니다. 이런 복잡한 데이터를 깜끔한 형식으로 정리한 데이터는 대표적으로 XML, CSV, JSON이 있습니다. vvvvvvvvv (C, 파이썬, 펄, RFC2822에서 정의된 e-mail. 양식에서 개념을 얻어 만들어진 '사람이 쉽게 읽을 수 있는' 데이터 직렬화 방식은...) XML example - 기호와 문자, 줄바꿈을 통해 데이터를 보기 쉽게 나타냅니다. 값 값 값 단점: 작성하기 어렵고 귀찮음 / 용량이 큼 CSV example - 콤마(,)와 줄바꿈을 통해 데이터를 보기 쉽게 나타냅니..

    파이썬(Python)이란?

    파이썬은 인터프리터 방식으로 동작하는 고급 프로그래밍 언어입니다. 깔끔하고 간결한 문법을 가지고 있어 쉽게 배울 수 있으며, 다양한 운영체제에서 사용할 수 있습니다. 또한 모듈과 패키지를 쉽게 가져와 사용할 수 있기 때문에 다양한 프로그래밍 분야에서 사용되고 있습니다. 파이썬은 웹 크롤링, 딥러닝, 데이터분석에 사용될 수 있으며 그 밖에도 다양한 분야에서 활용되고 있습니다. 파이썬의 역사로는 1989년 귀도 반 로섬이 개발을 시작하여, 1991년 발표된 인터프리터 언어입니다. 주요 특징으로는 1. 동적 타이핑 2. 객체의 맴버에 무제한으로 접근할 수 있다. 3. 모듈, 클래스, 객체와 같은 언어의 요소가 내부에서 접근할 수 있고, 리플렉션을 이용한 기술을 쓸 수 있다. 가 있습니다.

    PWA, Progressive Web App이란 무엇일까

    PWA를 이해하기 앞서 알아야하는 개념에 대해 먼저 설명하겠습니다. 1. Native App (네이티브 앱) 2. Web Application (웹 앱) 3. Hybrid Application(하이브리드 앱) 4. Cross-Platform Application (크로스-플랫폼) 5. Progressive Web Application (PWA) 1. Native App 스마트폰이 처음 출시했을때 부터 있었던 가장 기본적인 형태의 앱입니다. 해당 스마트폰에 깔린 os(안드로이드, ios등)에 맞는 해당 os 전용의 앱이라고 생각하면 됩니다. 따라서 Native App은 해당 OS가 제공하는 가이드와 프레임워크로 주어진 방식대로 제작되기 때문에 네이티브 앱은 안드로이드 혹은 IOS에서 주어진 모든 자원과 기..

    웹 애플리케이션이란 무엇일까?

    웹 애플리케이션이란 무엇일까?

    코딩을 시작할때 쉽고 처음으로 접하는 HTML은 WEB의 시작점이라고 할 수 있다. 그렇다면 WEB은 무엇일까? 1. web vs internet 웹과 인터넷은 같은것이 아닙니다. 인터넷은 웹을 포괄하는 개념이고, 웹은 인터넷 위에서 돌아가는 여러 서비스 중 하나입니다. 웹 이외의 인터넷상의 서비스로는 ftp, email, 기타 등등 수많은 것들이 인터넷 상의 서비스로 동작합니다. 1960년 군사관련 기관에서 인터넷을 발명하였고 1990년 유럽 입자물리연구소에서 웹이 발명됩니다. 1990년 팀 버너스리경이 ws(웹 서버)와 wb(웹 브라우저)를 개발하고, 이 두가지가 서로 통신할 때 사용되는 프로토콜을 http라고 정의하고, 웹브라우저에 어떤 정보를 표현 할 수 있는 프로그래밍 언어를 HTML이라고 정의..

    UNIX란?

    0. 누가 만들었을까? 켄 톰슨이 처음 개발한 다중 가용자 방식의 대화식, 시분할 터리 시스템용 운영체제가 UNIX입니다. UNIX는 1969년 켄 톰슨과 데니스 리치가 벨 연구소에서 개발한 운영체제로, 이후 다양한 운영체제의 기반이 되었습니다. 1. 유닉스는 서버에서 많이 사용되는 운영체제(OS)이다. 2. UNIX는 왜 UNIX일까? UNIX의 의미를 생각하면 여러개, 혹은 포괄한다는 의미보단 하나로 몰리는 의미가 떠오른다. UNIX의 기초를 형성했던 OS는 Multics이다. Muiltics는 UNIX의 토대가 되는 다중유저, 멀티태스킹, 이식성 등의 특징을 전부 가지고 있다. Muiltics를 사용할 당시에는 컴퓨터는 크기가 컷으며 많은걸을 포괄해야했고 무거웠습니다. 따라서 UNIX를 제작할 때 ..

    CS 스터디 4회차 정리

    부트캠프에서 힘든점이 있었다면 극복한 경험을 설명해 주세요. @SpringBootTest와 @WebMvcTest의 차이점을 설명해주세요.@SpringBootTest는 프로젝트의 전체 컨텍스트를 로드하여 빈을 주입하기 때문에 속도가 느리고, 통합 테스트를 할 때 많이 사용합니다. 반면, @WebMvcTest는 MVC 부분 슬라이스 테스트로, 보통 컨트롤러 하나만 테스트하고 싶을 때 사용합니다. @WebmvcTest()의 프로퍼티로 테스트를 원하는 컨트롤러 클래스를 넣어줍니다. @SpringBootTest는 수많은 스프링 빈을 등록하여 테스트에 필요한 의존성을 추가하기 때문에, 필요한 빈만을 등록하여 테스트를 진행하고자 한다면 슬라이드 테스트 어노테이션인 @WebMvcTest를 사용하는것이 더 효율적입니다 ..