개발 기록
-
[CS/JAVA] Optional API / 컬렉션 프레임워크 / List, Set, Map, Stack, QueueCS/Java 2025. 1. 23. 23:08
• Optional API에 대해 설명해주세요. 개발할 때 가장 많이 발생하는 예외 중 하나가 NPE(Null Pointer Exception) 입니다. NPE를 피하려면 null 여부 검사를 필연적으로 하게 되는데, 만약 null 검사를 해야하는 변수가 많은 경우, 코드가 복잡해지고 번거롭습니다. 하지만, Java8부터 Optional를 제공하여 null로 인한 예외가 발생하지 않도록 도와주고, Optional 클래스의 메소드를 통해 null을 컨트롤 할 수 있습니다. • 컬렉션 프레임워크에 대해 설명해주세요. 다수의 데이터를 쉽고 효과적으로 관리할 수 있는 표준화된 방법을 제공하는 클래스의 집합을 의미합니다. 자바 컬렉션에는 List, Set, Map 인터페이스를 기준으로 여러 구현체가 존재하..
-
[CS/JAVA] 리플렉션(Reflection) / Error와 Exception의 차이 / CheckedException과 UnCheckedException의 차이CS/Java 2025. 1. 23. 23:08
• 리플렉션(Reflection)이란 무엇인지 설명해주세요.리플렉션이란 구체적인 클래스 타입은 알지 못해도 그 클래스의 메소드, 타입, 변수들에 접근할 수 있도록 해주는 자바 API 입니다. • 리플렉션은 어떤 경우에 사용되는지 설명해주세요.코드를 작성할 시점에는 어떤 타입의 클래스를 사용할지 모르지만, 런타임 시점에 지금 실행되고 있는 클래스를 가져와서 실행해야 하는 경우 사용됩니다. 프레임워크나 IDE에서 이런 동적인 바인딩을 이용한 기능을 제공합니다. intelliJ의 자동완성 기능, 스프링의 어노테이션이 리플렉션을 이용한 기능이라 할 수 있습니다. • Error와 Exception의 차이를 설명해주세요.Error는 실행 중 일어날 수 있는 치명적 오류를 말합니다. 컴파일 시점에 체크할 ..
-
[프로그래머스/JAVA] 행렬의 곱셈Algorithm/Java 2025. 1. 23. 15:38
https://school.programmers.co.kr/learn/courses/30/lessons/12949 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 📌 문제 풀이 arr1 [[1, 4], [3, 2], [4, 1]] arr2 [[3, 3], [3, 3]] 배열이 위처럼 주어졌을 때,행렬의 곱셈은 " arr1 행렬 x arr2 행렬 = arr1 행렬의 행 개수 X arr2 행렬의 열 개수 " 를 나타낸다. answer[0][0] = (arr1[0][0] * arr2[..
-
[프로그래머스/JAVA] n^2 배열 자르기Algorithm/Java 2025. 1. 23. 10:18
https://school.programmers.co.kr/learn/courses/30/lessons/87390 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr [ 오답 노트 ]❌ 기존 오답 코드class Solution { public int[] solution(int n, long left, long right) { int[] answer = new int[right - left + 1]; // 1. n행 n열 크기의 2차원 배열 만들기 // n = 3 (3행 3열)일때, // 1 2 3 // 2 2 3 // 3 3 3..
-
[CS/JAVA] static / static을 사용하는 이유 / Inner Class / 내부 클래스를 static으로 해야 하는 이유CS/Java 2025. 1. 22. 21:48
• static에 대해 설명해주세요.static 키워드를 사용한 변수나 메소드는 클래스가 메모리에 올라갈 때 자동으로 생성되며, 클래스 로딩이 끝나면 바로 사용할 수 있습니다. 즉, 인스턴스(객체) 생성없이 바로 사용 가능합니다. 모든 객체가 메모리를 공유한다는 특징이 있고, GC 관리 영역 밖에 있기 때문에 프로그램이 종료될 때까지 메모리에 값이 유지된 채로 존재하게 됩니다. • static을 사용해야 하는 이유에 대해 설명해주세요.static은 자주 변하지 않는 값이나 공통으로 사용되는 값 같은 공용 자원에 대한 접근에 있어서 매번 메모리에 로딩하거나 값을 읽어들이는 것보다 일종의 '전역 변수'와 같은 개념을 통해 접근하는 것이 비용도 줄이고 효율을 높일 수 있습니다. 인스턴스 생성 없이 바로..
-
[CS/JAVA] String, StringBuffer, StringBuilder의 차이 / 접근 제한자 / 클래스 멤버 변수 초기화 순서CS/Java 2025. 1. 22. 21:07
• String, StringBuffer, StringBuilder의 차이를 설명해주세요. String은 불변의 속성을 가지며, StringBuffer와 StringBuilder는 가변의 속성을 가집니다. StringBuffer는 동기화를 지원하여 멀티 쓰레드 환경에서 주로 사용하며,StringBuilder는 동기화를 지원하지 않아 싱글 쓰레드 환경에서 주로 사용합니다. • String 객체가 불변인 이유에 대해 아는대로 설명해주세요. ➀ 캐싱 기능에 의한 메모리 절약과 속도 향상자바에서 String 객체들은 Heap의 String Pool 이라는 공간에 저장되는데, 참조하려는 문자열이 String Pool에 존재하는 경우 새로 생성하지 않고 Pool에 있는 객체를 사용하기 때문에 특정 문자열 값..
-
[CS/JAVA] Wrapper Class / Boxing과 UnBoxing / Synchronized / new String()과 리터럴("")의 차이CS/Java 2025. 1. 22. 15:48
• Wrapper Class란 무엇이며, Boxing과 UnBoxing은 무엇인지 설명해주세요.기본 자료형에 대한 객체 표현을 Wrapper Class라고 합니다. 기본 자료형 → Wrapper Class로 변환하는 것을 Boxing이라 하며,Wrapper Class → 기본 자료형으로 변환하는 것을 UnBoxing이라 합니다. • Synchronized에 대해 아는 대로 말해주세요.여러개의 쓰레드가 한개의 자원을 사용하고자 할 때, 현재 데이터를 사용하고 있는 쓰레드를 제외하고, 나머지 쓰레드들은 데이터에 접근할 수 없게 막는 개념입니다. 데이터의 thread-safe를 하기 위해 자바에서 Synchronized라는 키워드를 제공해 멀티 쓰레드 환경에서 쓰레드 간 동기화를 시켜 데이터의 thr..
-
[프로그래머스/JAVA] 할인행사Algorithm/Java 2025. 1. 22. 11:34
https://school.programmers.co.kr/learn/courses/30/lessons/131127 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 📌 문제 요약 정현이가 원하는 제품과 수량이 10일간의 할인 목록과 일치하는 구간을 찾아 회원 가입 날짜를 계산해야 합니다. 기존 코드에서 결과가 정확하지 않은 이유를 분석하고 수정 내용을 정리합니다.[ 오답 노트 ]❌ 기존 오답 코드import java.util.*;class Solution { public int solution(String[] want, int[] number, String[] discount) { ..