Tiny Star

🪄Interview 20

[CS STUDY INTERVIEW] 10주차 - GC(Garbage Collection)

CS 스터디 10주차  GC(Garbage Collection)GC(Garbage Collection) 이름 그대로 쓰레기 수집을 하는데, 메모리 관리 방법 중 하나이다.프로그램이 더 이상 사용하지 않는 메모리 영역을 자동으로 찾아내어 재활용하는 과정으로이 기술은 메모리 누수를 방지하고 프로그램의 안정성을 높이는 데 크게 기여한다. 개발을 하다보면 사용하지 않는 객체들로 인하여 불필요한 메모리가 사용이되면서 메모리 누수가 발생한다.C/C++언어의 경우는 개발자가 직접 사용하지 않는 객체들에 대해서 free()함수를 이용하여메모리를 해제하면서 직접 관리해줘야하지만 Java에서는 JVM의 가비지 컬렉터가 불필요한 메모리를 알아서 정리해주기 때문에명시적으로 객체를 해제할 필요가 없다. 즉, 사용하지 않는 객체..

[CS STUDY INTERVIEW] 9주차 - JVM(Java Virtual Machine)

CS 스터디 9주차 JVM(Java Virtual Machine) JVM(Java Virtual Machine) 프로그램을 실행하기 위해 자바언어로 작성된 가상머신으로, 특정 운영 체제나 하드웨어에 종속되지 않고 자바 프로그램을 여러 플랫폼에서 실행할 수 있도록 하기 위해 설계되어있다. 한 번 작성한 코드를 어디서나 실행할 수 있게 해주는데에 중요한 역할을 한다는 것으로도 볼 수 있으며 정리해보면 자바 프로그램의 이식성과 효율성을 보장하며, 다양한 운영 체제 및 하드웨어 환경에서 일관된 실행이 가능하다. JVM은 런타임 환경에서 실행이 되며 메모리 관리, 스레드 관리, 바이트 코드 실행, 에외처리 등 프로그램을 실행하기 위해 필요한 환경을 제공하는데, 동작하는 위치는 1주차 스터디인 자바 컴파일을 다루며..

[CS STUDY INTERVIEW] 8주차 - 락(LOCK)

지난 7주차 스터디에 공부한 스레드에서 사용되는 락(LOCK)을 조금 더 자세히 파보는 CS 스터디 8주차 락(LOCK) 락(LOCK) 스레드에서 사용되는 락(LOCK)은 동시성 프로그래밍에서 중요한 개념이다. 여러 스레드가 동시에 돌아가는 멀티 스레드 환경에서 공유 자원을 동시에 접근할 때 발생할 수 있는 충돌을 방지하기 위한 동기화 기술이다. 락을 사용함으로써 특정 시점에 자원을 사용할 수 있는 스레드의 갯수를 제한하여 프로그램 동작을 안정적이고 예측가능하도록 보장한다. 락(LOCK)의 기본 개념 상호 배제 이 원칙은 한 번에 하나의 스레드만 공유 자원에 접근할 수 있도록 하여 스레드들이 동시에 같은 데이터를 수정하는 것을 방지한다. 상호 배제는 데이터 경합을 방지하거나 데이터의 일관성/정확성을 위해..

[CS STUDY INTERVIEW] 7주차 - 스레드(Threads)

CS 스터디 7주차 스레드(Threads) 스레드(Threads) 컴퓨팅 분야에서 다양한 맥락에서 사용되지만, 일반적으로 프로세스 내에서 실행되는 작업의 최소 단위를 의미한다. 스레드는 프로세스 내에서 독립적으로 실행되는 흐름의 단위로, 각 스레드는 프로세스의 코드를 실행하며, 자신만의 실행 상태(예: 프로그램 카운터), 스택, 레지스터 집합을 가지고 있지만 같은 프로세스 내의 다른 스레드와 힙 메모리 영역, 데이터 세그먼트, 코드 세그먼트 등을 공유한다. 이는 스레드의 특징과도 겹치는 부분인데 스레드 특징을 살펴보면 1) 경량성(Lightweight) 프로세스에 비해서 생성이나 종료, 컨텍스트 스위칭이 빠르고 자원을 효율적으로 사용할 수 있다. 2) 자원공유(Resource Sharing) 프로세스 내..

[CS STUDY INTERVIEW] 6주차 - 캐스팅 (Casting)

CS 스터디 6주차 자바에서의 캐스팅(Casting) 캐스팅이란 형변환을 의미하며 어떤 데이터 타입을 다른 데이터 타입으로 변환하는 과정을 의미하며, 데이터 타입이 다를 경우 서로 호환되지 않기 때문에 이런 경우에 데이터 타입을 맞춰서 로직을 처리하거나 저장할 때 유용하다. 캐스팅에는 크게 업캐스팅과 다운캐스팅. 두 가지의 유형이 존재한다. 캐스팅의 종류 1. 업캐스팅(암시적 캐스팅 - Implicit Casting) 작은 데이터 타입의 값은 큰 데이터 타입으로 데이터 손실이 없을 경우에 자동으로 변환되는데, 이 때 발생하는 것이 업캐스팅이다. 예를 들어 int를 double로 변환하거나 float를 double로 변환하는 것이 업캐스팅의 예라고 할 수 있다. int x = 10; double y = x..

[CS STUDY INTERVIEW] 5주차 - 직렬화(Serialization)

CS 스터디 5주차 직렬화(Serialization) 먼저 직렬화란 자바 시스템 내부에서 객체 또는 데이터를 외부의 자바 시스템에서도 사용할 수 있도록 바이트 형태로 변환하는 기술(바이트 스트림)이다. 변환을 통해 파일을 저장하거나 네트워크를 통해 전송할 수 있도록 하며 객체의 상태를 저장하고 다른 프로그램이나 시스템에서 객체를 복원하는데 사용된다. 이를 시스템적으로 접근해보면 JVM의 힙 또는 스택 메모리에 상주하고 있는 객체 데이터를 직렬화를 통해 바이트 형태로 변환하여 데이터베이스나 파일과 같은 외부 저장소에 저장해두고, 다른 컴퓨터에서 이 파일을 가져와서 역직렬화를 통해 객체로 변환해서 JVM 메모리에 적재하는 것으로 볼 수 있다. 직렬화를 사용하는 이유는 각자 PC의 OS마다 서로 다른 가상 메..

[CS STUDY INTERVIEW] 4주차 - 오토박싱(Autoboxing)&언박싱(Unboxing)

CS 스터디 4주차 오토박싱(Autoboxing)과 언박싱(Unboxing) 래퍼클래스 (Wrapper Class) 자바의 자료형은 크게 기본타입(Primitive type)과 참조타입(Reference type)으로 나누어진다고 지난 포스팅에서 다뤘었다. 기본타입은 int, long char, float, double, boolean 등이 있고 참조타입은 class, interface 등이 있는데 프로그래밍을 하다보면 기본 타입의 데이터들을 객체로 표현해야하는 경우가 있다. 이 때 기본 타입을 객체로 다루기 위해서 사용하는 클래스가 래퍼클래스(Wrapper class)로 즉, 기본 자료형을 객체로 래핑하여 해당 자료형에 대한 추가적인 기능을 제공하는 클래스다. [래퍼클래스의 종류와 표기] 기본타입(Pr..

[CS STUDY INTERVIEW] 3주차 - Primitive type(기본/원시타입)과 Reference type(참조타입)

CS 스터디 3주차 자바에서는 데이터 타입을 두 가지 범주로 나눌 수 있다. 기본/원시 타입(Primitive type)과 참조타입 (Reference type)이 있는데 기본/원시 타입(Primitive type)은 쉽게 말해 정수, 실수, 문자, 리터럴 등 실제 데이터 값이 저장되고 참조 타입(Reference type) 객체의 주소를 참조하는 타입으로 메모리의 주소 값을 통해 객체를 참조한다. Primitive type (기본/원시 타입) 기본 데이터 타입은 자바에서 제공하는 내장된 데이터 타입으로, 간단한 값을 저장하는데 사용된다. 이 타입은 미리 정의되어 있고 변수에 직접 값을 저장한다. 종류 키워드 크기 기본값 표현 범위 논리형(Boolean Type) boolean 1byte false tr..

[CS STUDY INTERVIEW] 2주차 - Call by value와 Call by reference

CS 스터디 2주차 자바에서의 Call by value와 Call by reference는 매개변수를 전달하는 방식에 관한 용어이다. 자바에서의 함수 호출 방식 자바에서의 함수 호출 방식은 전달되는 인자의 데이터 타입에 따라 달라진다. 1. 원시 자료형(primitive type) : 값에 의한 호출 (Call by value) : int, short, long, float, double, char, boolean과 같은 원시 자료형 즉 기본형들은 값을 복사하여 함수에 전달된다. 2. 참조 자료형(reference type) : 주소 값(참조 값)에 의한 호출 (Call by reference) : 배열이나 클래스 인스턴스와 같은 참조 자료형은 해당 객체의 주소 값이 복사되어 함수에 전달된다. Call ..

[CS STUDY INTERVIEW] 1주차 - 자바(Java)컴파일

기술 면접 대비를 위해서 동기들과 스터디를 시작했다. 우선 1주차. 본격적으로 들어가기에 앞서 자바 언어는 OS에 독립적인 특징을 가지고 있다. 즉, 자바 및 플랫폼이 운영체제에 대한 의존성을 낮추는 능력이 있다는 의미인데 아래와 같은 방식으로 구현이 된다. 1. 바이트 코드 -> 자바 컴파일러가 자바 소스 코드를 바이트 코드로 변환하는 과정을 거치는데, 이 바이트 코드는 특정 운영 체제나 하드웨어 플랫폼에 의존하지 않는 중간 형태의 코드로 각 명령어는 1바이트 크기의 Opcode와 추가 피연산자로 이루어져 있다. 2. JVM (Java Virtual Machine) -> 자바 프로그램은 JVM에서 실행되는데, JVM은 운영 체제와 하드웨어에 대한 추상화 계층을 제공하여 자바 프로그램이 다양한 운영체제에..