Development 20

[스프링 입문을 위한 자바 객체지향의 원리와 이해] 3장. 자바와 객체지향(다형성, 캡슐화)

다형성: 사용편의성오버라이딩(OverRiding)과 오버로딩(OverLoading)오버라이딩: 같은 메서드 이름, 같은 인자 목록으로 상속 관계에 있는 부모 클래스의 메서드를 재정의.주로 상속받은 메서드를 자식 클래스의 요구에 맞게 변경하기 위해 사용됨.오버로딩: 같은 메서드 이름, 다른 인자 목록으로 다수의 메서드를 중복 정의.이때, 메서드의 매개변수 타입이나 개수가 달라야 함. 다형성과 T메모리Animal 클래스name: StringshowName(): voidPenguin 클래스 (Animal을 상속)habitat: StringshowName() : void -> Animal의 showName()을 오버라이딩showName(String yourName) : void 오버로딩된 메서드showHabit..

Development/CS 2025.03.07

[스프링 입문을 위한 자바 객체지향의 원리와 이해] 3장. 자바와 객체지향(추상화, 상속)

클래스 vs 객체사람, 김연아, 뽀로로, 펭귄 - 누가 객체, 누가 클래스인가? 사람의 나이는? 김연아의 나이는?  사람과 펭귄 - 포괄적인 개념이므로 알 수 없다 : 클래스(Class)김연아와 뽀로로 - 실체적인 개념이므로 알 수 있다 : 객체(Object) 객체 지향의 4대 특성캡상추다캡 - 캡슐화: 정보 은닉상 - 상속: 재사용추 - 추상화: 모델링다 - 다형성: 사용 편의 1. 추상화: 모델링추상화란? 구체적인 것을 분해한다. 관찰자가 관심 있는 특성만 갖고 재조합한다.객체는 유일무이한 사물이다.클래스는 같은 특성을 지닌 여러 객체를 총칭하는 집합의 개념이다. 클래스를 이용해 객체(Instance) 만들기사람 홍길동 = new 사람();클래스 객체참조변수 = new 클래스();*객체(Object)..

Development/CS 2025.02.27

[JAVA - 면접 대비] 자바와 절차적/구조적 프로그래밍

절차적 프로그래밍과 구조적 프로그래밍의 차이는?절차적 프로그래밍(Procedural Programming)프로그램을 순차적인 절차(순서)에 따라 작성하는 프로그래밍 방식함수(메서드)를 사용하여 코드의 재사용성을 높이지만, 데이터와 함수를 분리하여 관리대표적인 언어: C, Pascal구조적 프로그래밍(Structured Programming)절차적 프로그래밍의 한 종류로, 프로그램을 순차(Sequence), 선택(Selection), 반복(Iteration)의 구조로 구성하여 흐름을 명확하게 하는 방법절차적 프로그래밍보다 더 명확한 제어 흐름과 모듈화를 강조함.Goto 문을 사용하지 않고, 함수와 제어문을 활용하여 프로그램을 모듈화대표적인 언어: C, Java, Python 등 자바는 절차적 프로그래밍과 ..

Development/CS 2025.02.14

[스프링 입문을 위한 자바 객체지향의 원리와 이해] 2장. 자바와 절차적/ 구조적 프로그래밍

자바 프로그램의 개발과 구동현실 세계가상 세계(자바 월드) 소프트웨어 개발 도구JDK - 자바 개발 도구JVM용 소프트웨어 개발 도구운영체제JRE - 자바 실행 환경JVM용 OS하드웨어 - 물리적 컴퓨터JVM - 자바 가상 기계가상의 컴퓨터   JVM(Java Virtual Machine)이란?말그래도 '가상기계'다.현실 세계에서 컴퓨터를 구동하기 위해 하드웨어와 운영체제, 소프트웨어, 스프트웨어를 개발할 수 있는 개발 도구가 필요하다.자바의 가상 세계는 현실 세계를 그대로 모방한다. JDK(소프트웨어 개발 도구)를 이용해 개발된 프로그램은 JRE(자바용 OS)에 의해JVM(자바 가상의 컴퓨터) 상에서 구동된다. 배포용은 편의를 위해 JDK가 JRE를 포함함. 다시 JRE가 JVM을 포함함.  객체지향 ..

Development/CS 2025.02.12

[자료구조] 트라이(Trie)

트라이(Trie)란?트라이(Trie, Prefix Tree)는 문자열을 효율적으로 저장하고 검색하기 위한 트리(Tree) 자료구조이다.특히 문자열 탐색, 자동 완성(Autocomplete), 사전(Dictionary) 검색 등에 자주 사용된다.  1. 트라이(Trie)의 특징✅ 루트노드는 항상 비어있음✅ 문자열의 공통 접두사를 공유하여 저장 (Prefix Sharing) - 루트노드의 자식노드는 단어의 첫 글자✅ 검색이 O(m) (m = 문자열 길이)로 매우 빠름✅ 사전(Dictionary), 자동 완성(Auto-complete), 검색 제안 등에 사용됨✅ 메모리 사용량이 많을 수 있음 (노드 개수 증가) 2. 트라이(Trie)의 구조트라이는 루트(Root) 노드에서 시작해 각 문자(Character)를..

Development/CS 2025.02.08

[면접을 위한 CS 전공 지식 노트] 5장. 자료구조

Section 1. 복잡도5.1.1 시간 복잡도 시간 복잡도란?알고리즘이 실행되는 데 걸리는 시간을 입력 크기(n)에 대한 함수로 표현한 것이다.즉, 입력 크기가 커질수록 알고리즘의 실행 시간이 어떻게 변하는지 분석하는 개념인 것이다.어떠한 알고리즘의 로직이 '얼마나 오랜 시간'이 걸리는지를 알 수 있다. 빅오 표기법시간 복잡도의 표기법이다. 입력 범위 n을 기준으로 해서 로직이 몇 번 반복되는지 나타내는 것이다.'가장 영향을 많이 끼치는' 항의 상수 인자를 빼고 나머지 항을 없앤다.입력 크기가 커질수록 연산량이 가장 많이 커지는 항만을 고려한다는 원리이다. 계수와 상수는 무시: O(2n) → O(n), O(5n²) → O(n²)가장 큰 차수만 남김: O(n² + n) → O(n²)최악의 경우를 기준으로..

Development/CS 2025.01.29

클러스터 인덱스(Clustered Index)와 넌클러스터 인덱스(Non-Clustered Index)

클러스터 인덱스(Clustered Index)실제 데이터가 저장되는 물리적 순서를 결정하는 인덱스이다. 마치 도서관에서 책을 도서번호순으로 실제로 배열하는 것과 같다. 테이블당 단 하나만 가질 수 있으며, 보통 프라이머리 키(PK)가 클러스터 인덱스가 된다. ✅ 사용되는 예시: "StudentID가 2인 학생을 찾아라"클러스터 인덱스를 통해 바로 해당 위치로 이동이 가능하다.매우 빠른 검색이 가능하다.CREATE TABLE Students ( StudentID INT PRIMARY KEY, -- 클러스터 인덱스가 됨 Name VARCHAR(50), Grade INT);넌클러스터 인덱스(Non-Clustered Index) 실제 데이터의 물리적 순서와는 무관하며, 별도의 공간에 정렬된 인..

Development/CS 2025.01.24

[면접을 위한 CS 전공 지식 노트] 4장. 데이터베이스

Section 1. 데이터베이스의 기본기본 개념데이터베이스: 일정한 규칙·규약을 통해 구조화되어 저장된 데이터 모음DBMS: 데이터베이스 제어·관리·통합의 역할을 하는 시스템이다. 응용 프로그램들이 데이터베이스를 공유하고 사용할 수 있도록 만들어준다.DBMS마다 정의된 쿼리 언어를 통해 CRUD 수행한다. 4.1.1 엔터티엔터티: 여러 개의 속성(사람, 장소, 물건, 사건, 개념 등)을 지닌 명사를 의미한다. ex) 회원 - 이름, 아이디, 주소, 전화번호강한 엔터티다른 엔터티에 의존하지 않고도 식별 가능ex) 학생(Student): 학번(Student ID)을 기본 키로 가지며, 다른 엔터티에 의존하지 않고 독립적으로 존재 가능약한 엔터티고유 식별자(Primary Key)가 없으며, 다른 엔터티(강한 ..

Development/CS 2025.01.22

신입 개발자를 위한 CS 면접 대비 질문 - 운영체제편

1. 운영체제의 역할은 무엇인가요?답변: 운영체제는 하드웨어와 사용자 간의 인터페이스를 제공하는 소프트웨어로, 주요 역할은 다음과 같습니다.프로세스 관리: CPU 스케줄링, 프로세스 생성 및 종료, 동기화 등을 관리합니다.메모리 관리: 메모리 공간 할당, 해제, 가상 메모리 등을 지원합니다.파일 시스템 관리: 데이터를 저장하고 검색하기 위한 파일 시스템을 제공합니다.입출력 관리: 입출력 장치와의 통신을 관리합니다.보안 및 보호: 리소스에 대한 접근을 제어하여 데이터와 시스템을 보호합니다.2. 멀티스레딩과 멀티프로세싱의 차이점은 무엇인가요?답변:멀티스레딩: 하나의 프로세스 내에서 여러 스레드가 작업을 수행하며, 메모리 공간을 공유합니다. 스레드 간 통신이 빠르지만, 한 스레드에 문제가 생기면 전체 프로세스..

Development/CS 2025.01.17

[면접을 위한 CS 전공 지식 노트] 3.4 CPU 스케줄링 알고리즘

Section 4. CPU 스케줄링 알고리즘스케줄링 알고리즘이란?프로그램이 실행될 때, CPU 스케줄링 알고리즘이 어떤 프로그램에 CPU 소유권을 줄 것인지 결정하고 CPU 스케줄러가 이에 따라 프로세스에서 해야 하는 일을 스레드 단위로 CPU에 할당한다. 3.4.1 비선점형 방식비선점형 방식(non-preemptive)은 프로세스가 스스로 CPU 소유권을 포기하는 방식이며, 강제로 프로세스를 중지하지 않는다. 따라서 컨텍스트 스위칭으로 인한 부하가 적다. FCFS(First Come, First Served)가장 먼저 온 것을 가장 먼저 처리하는 알고리즘이다.단점: 길게 수행되는 프로세스라 '준비 큐에서 오래 기다리는 현상'이 발생한다.SJF(Shortest Job First)실행 시간(과거 실행시간으..

Development/CS 2025.01.15