All'alba vincerò

At dawn, I will win!

2025/05 27

[연봉 앞자리를 바꾸는 개발자 기술 면접 노트] 도서 리뷰

연봉 앞자리를 바꾸는 개발자 기술 면접 노트 서평 "한빛미디어 서평단 활동을 위해서 책을 협찬 받아 작성된 서평입니다." '연봉 앞자리를 바꾸는 개발자 기술 면접 노트'는 20년 차 개발자이자 쿠팡과 카카오에서 면접관으로 활동한 이남희 저자가 집필한 실전 중심의 IT 취업·이직 가이드입니다. 이 책은 단순한 기술 나열이 아닌, 면접관의 시선과 지원자의 입장을 동시에 담은 전략서로, 개발자 취업에 필요한 전반적인 프로세스를 담고 있습니다. 커리어 설계 → 이력서 작성 → 기술 면접 및 코딩 테스트까지, 모든 단계를 현실적으로 다루며, 특히 실무에 필요한 핵심 역량과 “성장 가능성이 있는 회사”를 고르는 법까지 알려준다는 점에서 매우 실용적입니다. 현재 개발자 취준 시장에 막 뛰어든 저에게 딱 ..

카테고리 없음 2025.05.31

메모리(Memory)

메모리(Memory) 개요현대 컴퓨터의 폰 노이만 구조에서는 프로그램의 코드와 데이터는 모두 메모리에 올라가서 실행됨⇒ 프로그램 내장 방식(Von Neumann Stored Program Concept)이라고 부름이 방식 덕분에 프로그램이 변경될 때마다 하드웨어를 바꾸지 않아도 됨메모리에는 메인 메모리와 보조 메모리가 있음 메모리의 구분컴퓨터에서 사용하는 메모리는 크게 메인 메모리(Main Memory)와 보조 메모리(Secondary Memory)로 나눌 수 있음 1. 메인 메모리(Main Memory)RAM (Random Access Memory): 어떤 데이터에 접근해도 접근 시간이 동일한 메모리 휘발성 메모리 → 전원이 끊기면 모든 데이터가 사라짐그래서 대부분의 프로그램은 비휘발성 보조 메모..

CS/컴퓨터 구조 2025.05.30

중앙 처리 장치(CPU, Central Processing Unit)

중앙 처리 장치(CPU, Central Processing Unit): 컴퓨터의 핵심 두뇌 역할을 하는 장치개요현대 컴퓨터는 기본적으로 폰 노이만 구조를 따름⇒ 중앙 처리 장치(CPU), 메모리, 입출력 장치가 서로 독립적으로 분리된 구조CPU는 이 구조의 중심에서 명령을 읽고, 해석하고, 실행하는 역할을 담당함→ 우리가 작성한 코드도 결국 CPU가 읽고 실행해야만 동작함프로그램은 명령어와 데이터로 구성됨프로그램을 실행하면 메모리에 적재되고, 중앙 처리 장치 내에 있는 제어 장치가 프로그램의 명령어와 필요한 데이터를 읽어와 적절한 계산을 반복하며 프로그램을 실행힘 중앙 처리 장치의 구성 요소 산술 논리 연산 장치 (ALU, Arithmetic Logic Unit): 실제 계산 작업을 담당하는 장치산..

CS/컴퓨터 구조 2025.05.30

블랙 박스(Black Box), 컴파일러 & 인터프리터

블랙박스(Black Box): 내부 작동 원리는 숨겨져있고, 입력에 따른 출력만 예측 가능한 것사용자는 시스템의 내부 구조를 몰라도 출력 결과를 예측할 수 있는 상태ex) 자동차 운전, 엔진이나 부품의 원리를 몰라도 운전 가능→ 복잡한 내부 구조를 감춘 채 사용만 가능하게 만든 구조 모듈화: 복잡한 시스템을 여러 블랙박스로 나누는 것각각의 블랙박스를 독립적으로 설계하여 전체 시스템을 효율적으로 구성→ 유지보수 용이, 재사용성 증가, 설계 간결화 분할 정복: 큰 문제를 보다 작은 문제로 분할해서 복잡함을 단순화하는 방법컴퓨터 하드웨어나 소프트웨어 같은 복잡한 시스템은 이 방식을 사용함→ 문제를 작은 단위로 나누어 하나씩 해결하는 구조→ 블랙박스 개념과 모듈화를 통해 구현 가능 탑다운 방식 (Top-d..

CS/컴퓨터 구조 2025.05.30

동적 프로그래밍 - 메모이제이션, 타뷸레이션

동적 프로그래밍(Dynamic Programming): 큰 문제를 작은 문제로 나누고, 그 결과를 저장하여 중복 계산을 피하는 최적화 기법 메모이제이션 (Memoization): 계산 결과를 저장해서 여러 번 계산하지 않도록 하는 기법하향식(Top-Down) 방식재귀를 사용해 큰 문제부터 내려가며 계산이미 계산한 결과는 저장해두고 다시 사용함 메모이제이션의 장단점장점재귀 덕분에 하향식 계산 방식으로 어려운 문제를 간단히 해결할 수 있음중복 계산을 하지 않아서 속도가 빠름 단점재귀를 사용하기 때문에 오버헤드가 큼 메모이제이션은 속도를 위해 메모리를 사용하기 때문에 메모리 사용량 증가 예시: 피보나치 수열 기본 재귀 방식function fibonacci1(n){ if(n == 0 || n ..

CS/알고리즘 2025.05.26

정렬 알고리즘: 퀵 정렬(Quick Sort)

퀵 정렬 (Quick Sort): 기준값(피벗)을 정해 작은 값은 왼쪽, 큰 값은 오른쪽으로 나누며 정렬하는 빠른 정렬 알고리즘 분할 정복 알고리즘재귀로 정렬하는 알고리즘 퀵 정렬의 성능시간 복잡도평균: Θ(n log n) → 피벗이 배열의 절반씩 나누는 경우최악: O(n²) → 피벗이 한쪽 끝에 치우친 경우→ 하지만 최악의 경우는 거의 발생하지 않음성능 평가병합 정렬이 평균 성능만 보면 더 나을 수 있지만, 퀵 정렬은 실제로 더 적은 비교와 메모리 사용량으로 인해더 빠르고 효율적인 알고리즘으로 평가됨 퀵 정렬의 장단점장점 전체적으로 성능이 좋음 단점 전체적으로 성능이 좋음 퀵 정렬의 흐름[ 5, 3, 7, 2, 6, 4, 9, 1, 8 ]정렬을 시작하기 전에 배열에서 하나를 피벗(pivot)..

CS/알고리즘 2025.05.26

정렬 알고리즘: 병합 정렬(Merge Sort)

병합 정렬 (Merge Sort): 큰 배열을 잘게 나눴다가, 정렬하면서 다시 합쳐 정렬을 완료하는 알고리즘분할 정복 알고리즘(divide and conquer): 복잡한 문제를 한 번에 해결하려 하지 말고, 작은 문제로 쪼개서 각각 해결한 후 결과를 합쳐 전체 문제를 해결하는 방식 재귀로 정렬하는 알고리즘 병합 정렬의 성능시간 복잡도: O(n log n)병합 정렬에서 성능을 평가하는 부분 ⇒ Merge() 함수 내에서 흩어진 배열을 합치는 부분 병합 정렬의 장단점장점전체적으로 성능이 좋음 단점이해와 구현이 어려움 병합 정렬 알고리즘 흐름원본: 3 5 2 4 1 7 8 61단계: 3 5 2 4 1 7 8 6 → 2개로 쪼갬2단계: 3 5 2 4 1 7 8 6 → 4개로 쪼갬3단계:..

CS/알고리즘 2025.05.26

컴파일과 프로세스

프로그래밍 언어프로그래밍 언어는 코드를 어떻게 실행하느냐에 따라 컴파일 언어와 인터프리터 언어로 나뉨 컴파일 언어: 개발자가 코드를 작성하고 컴파일 과정을 거쳐 0과 1로 된 기계어로 실행 파일을 만듦컴파일 과정에서 코드의 문법 검사를 시행하고, CPU에서 처리 가능한 기계어로 실행 파일을 만들어놓기 때문에 실행 속도가 빠름대표적인 컴파일 언어: C, C++, Go 등 인터프리터 언어: 개발자가 작성한 코드를 미리 기계어로 만들지 않고 실행 시 코드를 한 줄씩 해석해서 실행하는 언어미리 컴파일하지 않기 때문에 실행 도중에 오류가 발생할 수 있고, 실행 속도도 컴파일 언어에 비해 느림대표적인 인터프리터 언어: Python, JavaScript 등 컴파일 과정개발자가 작성한 코드가 실행 파일로 만..

CS/운영체제 2025.05.25

교착 상태(deadlock) 해결

교착 상태 회피 (Deadlock Avoidance): 프로세스에게 자원을 할당할 때, 자원을 어느 수준까지 할당하면 교착 상태가 발생하는지 파악해서 그 수준을 넘지 않도록 조절해서 할당함 교착 상태 회피는 전체 자원의 수와 현재 할당된 자원의 수를 기준으로 시스템의 상태를 두 가지로 나눔안전 상태(Safe State): 모든 프로세스가 정상적으로 종료될 수 있는 상태불안전 상태(Unsafe State): 당장은 문제가 없지만, 교착 상태로 이어질 가능성이 있는 상태불안전 상태라고 해서 무조건 교착 상태에 빠지는 건 아니지만 위험성이 커지므로 피하는 게 좋음 교착 상태 검출 방법1. 가벼운 검출: 타이머 사용프로세스가 일정 시간동안 작업을 진행하지 않으면 교착 상태가 발생했다고 간주하고 교착 상태를 ..

CS/운영체제 2025.05.25

정렬 알고리즘: 삽입 정렬(Insertion Sort)

삽입 정렬 (Insertion Sort): 배열을 정렬된 부분과 정렬되지 않은 부분으로 나누고, 하나씩 꺼내면서 알맞은 자리에 삽입해 나가는 방식 선택 정렬과 마찬가지로 정렬된 영역과 정렬되지 않은 영역으로 나눠서 계산함정렬되지 않은 영역에서 데이터를 꺼내서 정렬된 영역 내 적절한 위치에 삽입해서 정렬함 선택 정렬의 성능시간 복잡도: O(n²)성능이 좋지 않음 선택 정렬의 장단점장점이해와 구현이 간단함 단점성능이 O(n²)으로 별로 좋지 않음 삽입 정렬 흐름[ 4, 1, 5, 3, 6, 2 ]정렬된 영역: 4, 정렬되지 않은 영역: 1, 5, 3, 6, 2정렬되지 않은 영역의 첫 번째 원소인 1을 정렬된 영역의 마지막 데이터인 4와 비교함4는 1보다 크기 때문에 4를 오른쪽 인덱스에 덮어씀([..

CS/알고리즘 2025.05.23