CS
-
[CS/JAVA] 가비지 컬렉션 / 객체지향 설계의 원칙CS/JAVA 2024. 11. 26. 16:53
• 가비지 컬렉션(Garbage Collection)에 대해 설명해주세요. 가비지 컬렉션은 JVM의 메모리 관리 기법 중 하나로, 시스템에서 동적으로 할당됐던 메모리 영역 중에서 필요 없어진 메모리 영역을 회수하여 메모리를 관리해주는 기법입니다. • 가비지 컬렉션 과정에 대해 설명해주세요.GC의 작업을 수행하기 위해서 JVM이 어플리케이션의 실행을 잠시 멈추고, GC를 실행하는 쓰레드를 제외한 모든 쓰레드들의 작업을 중단 후 (Stop The World 과정), 사용하지 않는 메모리를 제거(Mark and Sweep 과정)하고 작업이 제개됩니다. GC의 작업은 Young 영역에 대한 Minor GC와 Old 영역에 대한 Major GC로 구분됩니다. • 객체지향의 설계원칙에 대해 설명해주세..
-
[CS/JAVA] 추상 클래스 / 인터페이스 / 싱글톤 패턴CS/JAVA 2024. 11. 24. 17:08
• 추상 클래스와 인터페이스를 설명해주시고, 차이에 대해 설명해주세요. - 추상 클래스는 클래스 내 추상 메소드가 하나 이상 포함되거나 abstarct로 정의된 경우를 말하고,- 인터페이스는 모든 메소드가 추상 메소드로만 이루어져 있는 것을 말합니다. - 공통점new 연산자로 인스턴스 생성 불가능 합니다. 사용하기 위해서는 하위 클래스에서 확장/구현 해야 합니다. - 차이점인터페이스는 그 인터페이스를 구현하는 모든 클래스에 대해 특정한 메소드가 반드시 존재하도록 강제함에 있고,추상 클래스는 상속받는 클래스들의 공통적인 로직을 추상화시키고, 기능 확장을 위해 사용합니다. 추상 클래스는 다중 상속이 불가능하지만, 인터페이스는 다중 상속이 가능합니다. • 싱글톤 패턴에 대해 설명해주세요. 싱글톤 패..
-
[CS/JAVA] 객체지향 프로그래밍 / try-with-resources / 불변 객체 / 참조 타입 / finalCS/JAVA 2024. 11. 24. 17:08
• 객체지향 프로그래밍(OOP)에 대해 설명해주세요. 우리가 실생활에 쓰는 모든 것을 객체라 하며, 객체지향 프로그래밍은 프로그램 구현에 필요한 객체를 파악하고, 상태와 행위를 가진 객체를 만들고, 각각의 객체들의 역할이 무엇인지를 정의하여, 객체들 간의 상호작용을 통해 프로그램을 만드는 것을 말합니다. 즉, 기능이 아닌 객체가 중심이며, "누가 어떤 일을 할 것인가?" 가 핵심입니다. 특징으로는 상속, 다형성, 캡슐화, 추상화 등이 있고, 모듈 재사용으로 확장 및 유지보수가 용이합니다. • try-with-resources에 대해 설명해주세요. try-with-resources는 try-catch-finally의 문제점을 보완하기 위해 나온 개념입니다. try(...) 안에 자원 객체를 전달하면..
-
[CS/JAVA] Java의 컴파일 과정 / Java의 원시 타입 / 오버라이딩 vs 오버로딩CS/JAVA 2024. 11. 22. 17:04
• Java의 컴파일 과정에 대해 설명해주세요. ➀ 개발자가 .java 파일을 생성합니다. ➁ build를 합니다. ➂ 자바 컴파일러의 javac의 명령어를 통해 바이트 코드(.class)를 생성합니다. ➃ 클래스 로더를 통해 JVM 메모리 내로 로드합니다. ➄ 실행엔진을 통해 컴퓨터가 읽을 수 있는 기계어로 해석됩니다. (각 운영체제에 맞는 기계어) • Java에서 제공하는 원시타입들에 무엇이 있고, 각각 몇 바이트를 차지하나요? 정수형 byte, short, int, long / 실수형 float, double / 문자형 char / 논리형 boolean 이 있고,정수형 1, 2, 4, 8 / 실수형 4, 8 / 문자형 2 / 논리형 1 바이트를 차지합니다. • 오버라이딩(Overridi..
-
[CS/Operating System] 프로세스와 스레드CS/운영체제 2024. 11. 22. 15:36
• 프로세스와 스레드의 차이? - 프로세스 : 메모리 상에서 실행 중인 프로그램 - 스레드 : 프로세스 안에서 실행되는 여러 흐름 단위 (기본적으로 프로세스마다 최소 1개의 스레드(메인 스레드)를 소유) 프로세스는 운영체제로부터 자원을 할당받지만, 스레드는 프로세스로부터 자원을 할당받고 프로세스의 코드/데이터/힙 영역을 공유하기 때문에 좀 더 효율적으로 통신할 수 있습니다. 또한 컨텍스트 스위칭도 캐시 메모리를 비우지 않아도 되는 스레드 쪽이 빠릅니다. 그리고 스레드는 자원 공유로 인해 문제가 발생 할 수 있으니 이를 염두에 둔 프로그래밍을 해야 합니다. (컨텍스트 스위칭 : 한 Task가 끝날 때까지 기다리는 것이 아니라 여러 작업을 번갈아가며 실행해서 동시에 처리될 수 있도록 하는 방법) ..
-
[CS/Data Structure] Array와 Linked ListCS/자료구조 2024. 10. 29. 21:55
• ⭐ Array(배열)과 LinkedList(링크드리스트)의 차이?➀ 배열 : 메모리 상에 순서대로 데이터를 저장합니다.➁ 링크드리스트 : 다음 데이터의 위치에 대한 포인터를 가지고 있는 구조입니다. 배열은 데이터를 인덱스로 조회할 수 있기 때문에 인덱스 조회 성능이 높고,데이터가 메모리에 순서대로 저장되어 있기 때문에, 캐시의 지역성으로 인하여 비교적 빠르게 탐색을 수행할 수 있습니다. (캐시의 지역성 : 캐시 메모리에서 데이터를 효율적으로 사용하는 메커니즘) 링크드리스트는 중간에 데이터를 삽입하거나 삭제하는 것이 용이하다는 장점이 있습니다. • Array vs ArrayList vs LinkedList? ➀ Array는 인덱스로 빠르게 값을 찾는 것이 가능합니다. ➁ LinkedL..
-
[CS/Network] GET과 POST의 차이점 / HTTP MethodCS/네트워크 2024. 10. 29. 21:55
• GET과 POST의 차이점 - GET 방식데이터를 조회하기 위해 사용되는 방식으로 데이터를 헤더에 추가하여 전송하는 방식입니다. URL에 데이터가 노출되므로 보안적으로 중요한 데이터를 포함해서는 안됩니다. - POST 방식데이터를 추가 또는 수정하기 위해 사용되는 방식으로 데이터를 바디에 추가하여 전송하는 방식입니다. 완전히 안전하다는 것은 아니지만 URL에 데이터가 노출되지 않아 GET보다는 안전합니다. 처리 방식 GET 방식POST 방식URL에 데이터 노출 여부OXURL 예시 http://localhost:8080/boardList?name=제목&contents=내용http://localhost:8080/addBoard데이터의 위치 Header(헤더)Body(바디)캐싱 가능 여부 OX멱등성 여..
-
[CS/JAVA] Java의 특징 / JVM의 역할 / JVM의 클래스CS/JAVA 2024. 10. 29. 21:55
• Java의 특징을 설명해주세요. - 자바는 객체 지향 프로그래밍 언어입니다.- 기본 자료형을 제외한 모든 요소들이 객체로 표현되고, 객체 지향 개념의 특징인 캡슐화 / 상속 / 다형성이 잘 적용된 언어입니다. - 장점 ⸰ JVM(자바 가상 머신) 위에서 동작하기 때문에 운영체제에 독립적입니다. ⸰ 가비지컬렉터를 통한 자동적인 메모리 관리가 가능합니다. - 단점 ⸰ JVM 위에서 동작하기 때문에 실행 속도가 상대적으로 느립니다. ⸰ 다중 상속이나 타입에 엄격하며 제약이 많습니다. • JVM의 역할에 대해 설명해주세요. JVM은 스택 기반으로 동작하며, 자바 바이트 코드를 운영체제에 맞게 해석해주는 역할을 하고, 가비지 컬렉터를 통해 자동적인 메모리 관리를 해줍니다. • J..