본문 바로가기

전체 글

(392)
1년간의 취직 준비, 그 후 취직 준비 자체는 나쁘지 않았다. 엄청 나빴을 뿐이다. 본 블로그 필자 양반은 그냥 다 포기하고 복학을 선택했다. 복학하면 여자친구 생길 줄 알았는데, 아니었다. MT 가면 그래도 생기겠지 라고 생각했지만 아니었다. 그래 여자친구가 다는 아니겠지 라고 생각하자. 지금은 그냥 학업에 충실하고 대인관계에서 차질만 없으면 되는 거 아니겠나. 후... 대학만 졸업한다고 뭐든 되는 건 아니지만 대외활동이나 이력, 스펙 쌓기가 너무 어렵다. 망할.
[취업준비] 행복한 다람쥐단 면접 들어가며 생에 첫 면접이었다. 경험삼아 떨어지리라 미리 생각하고 갔던 곳이었지만 진짜 떨어졌다. 주변 사람들은 절대로 붙을 것아라 말했지만 최종에서 무언가 걸림돌이 많이 된 것 같다. 이렇게 복기 하는 것으로 되돌아보니 모른다고 답한 질문이 되게 많았다. 떨어질만 했다고 생각한다. 준비해온 만큼 무언가를 보여주지 못 한것 같아서 아쉽기도 하다. 모르는 것들 뿐이라서 더 아쉬웠다. 복기와 함께 최적의 답변을 찾아갈 것이다. Q1. 최대한 준비해 온 만큼 자기 소개를 해달라. A2. (대충 준비한 자기소개 최대로 어필했다는 뜻) Q2. 네트워크에 대해 아는 대로 이야기 해보라. A2. 포톤 엔진을 사용했으나 네트워크에 대해서는 잘 모른다. 하지만 RPC의 개념과 활용은 가능하다. Q3. 이하로는 알고리즘에 ..
[CS 면접 준비 - 8] 비선형 자료구조 비선형 자료구조 비선형 자료구조란 일렬로 나열하지 않고 자료 순서나 관계가 복잡한 구조를 말한다. 일반적으로 트리나 그래프를 말한다. 그래프(Graph) 그래프는 정점과 간선으로 이루어진 자료구조를 말한다. 정점과 간선 어떠한 곳에서 어떠한 곳으로 무언가를 통해 간다고 했을 때, '어떠한 곳'은 정점(Vertex)이 되고 '무언가'는 간선(Edge)가 된다. 이때 두 정점 간에 한 쪽으로만 방향성을 가진 간선을 '단방향 간선'이라고 하며, 두 정점 간에 양 쪽으로 방향성을 가진 간선을 '양방향 간선'이라고 한다. 그래프는 이러한 성질들을 가지고 다음과 같은 모습을 나타낸다. 정점으로 나가는 간선을 해당 정점의 outdegree라고 하며, 들어오는 간선을 해당 정점의 indegree라고 한다. 위 그림의 ..
[CS 면접 준비 - 7] 선형 자료구조 선형 자료구조 선형 자료구조란 요소가 일렬로 나열되어 있는 자료구조를 말한다. 연결 리스트(Linked List) 연결리스트는 데이터를 감싼 노드를 포인터로 연결해서 공간적인 효율성을 극대화시킨 자료구조이다. 삽입과 삭제가 O(1)이 걸리며 탐색에는 O(n)이 걸린다. 위의 그림처럼 prev 포인터와 next 포인터로 앞과 뒤의 노드를 연결 시킨 것을 연결 리스트라고 한다. 연결 리스트는 싱글 연결 리스트, 이중 연결 리스트, 원형 이중 연결 리스트가 있다. 참고로 맨 앞에 있는 노드를 해드(Head)라고 한다. 싱글 연결 리스트: next 포인터만 가진다. 이중 연결 리스트: next 포인터와 prev 포인터를 가진다. 원형 이중 연결 리스트: 이중 연결리스트와 같지만 마지막 노드의 next 포인터가 ..
[CS 면접 준비 - 6] 자료구조에 관하여 - 복잡도 자료구조(Data Structure) 자료구조는 효율적으로 데이터를 관리하고 수정, 삭제, 탐색, 저장할 수 있는 데이터의 집합을 말한다. 복잡도 복잡도는 시간 복잡도와 공간 복잡도로 나뉜다. 시간 복잡도 빅오 표기법 시간 복잡도란 '문제를 해결하는데 걸리는 시간과 입력의 함수 관계'를 가리킨다. 어떠한 알고리즘의 로직이 '얼마나 오랜 시간'이 걸리는지를 나타내는 데 쓰이며, 보통 빅오 표기법으로 나타낸다. 예를 들어 '입력 크기 n'의 모든 입력에 대한 알고리즘에 필요한 시간이 10n2 + n이라고 한다면 다음과 같은 코드를 상상할 수 있다. 빅 오 표기법이란 입력 법위 n을 기준으로 해서 로직이 몇 번 반복되는지 나타내는 것인데, 위의 코드의 시간 복잡도를 빅 오 표기법으로 나타내면 O(n2)이 된다..
[CS 면접 준비 - 4] 프로세스와 쓰레드에 관하여 프로세스(Process)와 스레드(Thread) 프로세스는 컴퓨터에서 실행되고 있는 프로그램을 말하며 CPU 스케줄링의 대상이 되는 작업(Task)이라는 용어와 거의 같은 의미로 쓰인다. 쓰레드는 프로세스 내 작업의 흐름을 지칭한다. 위의 그림처럼 프로그램이 메모리에 올라가면 프로세스가 되는 인스턴스화가 일어나고, 이후 운영체제의 CPU 스케줄러에 따라 CPU 프로세스를 실행한다. 프로세스와 컴파일 과정 프로세스는 프로그램으로부터 인스턴스화 된 것을 말한다. 예를 들어 프로그램은 구글 크롬 프로그램(Chrome.exe)과 같은 실행 파일이며, 이를 두 번 클릭하면 구글 크롬 '프로세스'가 시작되는 것이다. 프로그램은 컴파일러가 컴파일 과정을 거쳐 컴파일러가 이해할 수 있는 기계어로 번역되어 실행될 수 있..
[CS 면접 준비 - 3] 메모리(Memory)에 관하여 메모리(Memory) CPU는 그저 '메모리'에 올라와 있는 프로그램의 명령어들을 실행할 뿐이다. 이때 메모리 계층과 메모리를 알아야 한다. 메모리 계층 레지스터 CPU 안에 있는 작은 메모리, 휘발성, 속도가 가장 빠름, 기억 용량이 가장 작다. 캐시 L1, L2 캐시를 지칭한다. 휘발성 빠름, 속도 빠름 기억 용량이 적다. 참고로 L3 캐시도 있다. 주기억장치 RAM을 가리킨다. 휘발성 보통, 속도 보통, 기억 용량은 보통이다. 보조기억장치 HDD, SSD를 일컬으며 휘발성 낮음, 속도 낮음, 기억 용량이 많다. 캐시(Cache) 캐시는 데이터를 미리 복사해 놓는 임시 저장소이자 빠른 장치와 느린 장치에서 속도 차이에 따른 병목 현상을 줄이기 위한 메모리를 말한다. 병목현상 전체 시스템의 성능이나 용..
[CS 면접 준비 - 2] 운영체제(OS)에 관하여 운영체제의 역할 CPU 스케줄링과 프로세스 관리 CPU 소유권을 어떤 프로세스에 할당할지, 프로세스의 생성과 삭제, 자원 할당 및 반환을 관리 메모리 관리 한정된 메모리를 어떤 프로세스에 얼마만큼 할당해야 하는지 관리한다. 디스크 파일 관리 디스크 파일을 어떠한 방법으로 보관할지 관리한다. I/O 디바이스 관리 I/O 디바이스와 컴퓨터 간의 데이터를 주고받는 것을 관리한다. 운영체제의 구조 유저프로그램이 맨 위에 있고 그 다음으로 GUI, 시스템콜, 커널, 드라이버가 있으며 가장 밑에 하드웨어가 있는 구조이다. 여기서 GUI, 시스템콜, 커널 드라이버 부분이 바로 운영체제를 지칭한다. 드라이버 하드웨어를 제어하기 위한 소프트웨어 시스템콜 시스템콜이란 운영체제가 커널에 접근하기 위한 인터페이스이며 유저 프..
[CS 면접 준비 - 1] C#에 관하여 C#에 관하여 C# 컴파일러는 확장자가 '.cs'인 소스파일을 이용하여 실행 파일을 만든다. 프로그램이 실행되면 CLR(Common Language Runtime)은 프로그램을 메모리에 올린 후 프로그램의 진입점을 찾는다. CLR(Common Language Runtime) C#으로 만든 프로그램이 실행되는 환경이다. 이름이 Common Lnaguage Runtime인 이유는, 이 런타임이 C#뿐 아니라 CLS(Common Language Specification) 규격을 따르는 모든 언어로 작성된 프로그램을 지원하기 때문이다. CLR은 단순히 각 언어로 작성된 프로그램의 실행뿐 아니라 서로 다른 언어로 작성된 언어 사이의 호환성을 제공하기도 한다. CLR과 C# 컴파일에 관하여 위에서도 잠깐 언급한 바..
출력(Output)과 상수(Constant)(2) 보호되어 있는 글입니다.
출력(Output)과 상수(Constant)(1) 보호되어 있는 글입니다.
1. 프로그래밍 언어의 분류(2) 보호되어 있는 글입니다.