일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 자바면접
- 네트워크
- 면접준비
- Spring
- 백엔드
- 스트림
- 자바8
- lock
- 백엔드면접
- stream
- 객체지향언어
- 공유락
- hashcode
- 배타락
- 운영체제
- http
- DB
- java
- 기술면접대비
- Application
- jpa
- 개발자기술면접
- 데이터베이스
- 개발자면접
- 자바기술면접
- equals
- 스프링
- 자바
- 기술면접
- 알고리즘
- Today
- Total
목록자바 (14)
서은파파의 추월차선
동일성과 동등성에 대해서 설명해주세요. 동일성과 동등성은 객체를 비교할 때 중요한 개념입니다. 자바에서는 이 두 개념을 equals() 메서드와 == 연산자를 통해 구분할 수 있습니다.equals()와 ==의 차이는 무엇인가요? equals()는 객체의 내용을 비교하는 반면, ==는 객체의 참조(레퍼런스)를 비교합니다. 따라서 두 객체의 내용이 같더라도 서로 다른 객체라면 equals()는 true를 반환할 수 있지만, ==는 false를 반환합니다. 동등성(Equality)은 뭔가요? 동등성은 논리적으로 객체의 내용이 같은지를 비교하는 개념입니다. 자바에서는 equals() 메서드를 사용하여 객체의 동등성을 비교합니다. Apple 클래스를 예시로 보면, Object.equals 메서드를 오버라이딩하여 ..
equals와 hashCode는 왜 함께 재정의해야 할까요? equals와 hashCode 메서드는 객체의 동등성 비교와 해시값 생성을 위해서 사용할 수 있습니다. 하지만, 함께 재정의하지 않는다면 예상치 못한 결과를 만들 수 있습니다. 가령, 해시값을 사용하는 자료구조(HashSet, HashMap..)을 사용할 때 문제가 발생할 수 있습니다. subscribes = new HashSet(List.of(subscribe1, subscribe2)); // 결과는 1개여야하는데..? 2개가 나온다. System.out.println(subscribes.size()); } class Subscribe { private final String email; ..
JPA에서 ID 생성 전략에 대해 설명해주세요. JPA에서 ID를 생성하기 위해서는 직접 할당과 자동 할당을 사용할 수 있습니다. 직접 할당은 @Id어노테이션만을 사용하여 Id값을 직접 할당하는 방식입니다. 반면, 자동 할당은 @Id와 @GeneratedValue를 함께 사용해서 원하는 키 생성 전략을 선택하는 방식입니다. @GeneratedValue의 stretagy 옵션을 통해 생성 전략을 설정할 수 있는데, 여기에 올 수 있는 값인 GenerationType는 다음과 같습니다. @Target({ElementType.METHOD, ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) public @interface GeneratedValue { ..
1. Stream API란?Stream API는 Java 8에서 추가된 기능으로, 컬렉션(List, Set, Map)이나 배열 등의 데이터를 함수형 프로그래밍 방식으로 처리할 수 있도록 해주는 강력한 도구입니다.기존의 for 루프를 이용한 반복적인 코드 대신 간결하고 가독성이 높은 코드를 작성할 수 있습니다.Stream의 주요 특징데이터를 연속적으로 처리 (파이프라인 구조)원본 데이터를 변경하지 않음 (불변성 유지)내부 반복을 사용하여 코드 간결화 (for 루프 대신 map, filter 등을 활용)병렬 처리 지원 (parallelStream())2. Stream API의 기본 개념Stream의 동작은 3단계로 나뉩니다.① 생성 (Source)Stream을 생성하는 단계배열, 리스트, 파일, 숫자 범위 ..
Java의 Math 클래스는 수학 연산을 수행하는 다양한 정적 메서드를 제공합니다. 아래에서 주요 메서드들을 설명하고 사용 예시를 함께 정리해 보겠습니다.1. 기본적인 수학 연산✅ Math.abs(): 절댓값 반환System.out.println(Math.abs(-10)); // 출력: 10✅ Math.max(), Math.min(): 최댓값 및 최솟값 반환System.out.println(Math.max(5, 10)); // 출력: 10System.out.println(Math.min(5, 10)); // 출력: 52. 반올림 및 올림/내림 함수✅ Math.round(): 반올림 (소수 첫째 자리에서 반올림)System.out.println(Math.round(4.5)); // 출력: 5Syst..
자바에서 String 및 Char 관련 API는 문자열을 다루는 데 필수적인 기능을 제공합니다. 주요 API와 그 사용 예시를 정리해 보겠습니다.✅ 1. String 클래스 (문자열 처리)📌 주요 메서드 및 사용 예제메서드설명사용 예시length()문자열 길이 반환"hello".length() → 5charAt(int index)특정 인덱스의 문자 반환"hello".charAt(1) → 'e'substring(int beginIndex, int endIndex)부분 문자열 반환"hello".substring(1, 4) → "ell"toUpperCase()대문자로 변환"hello".toUpperCase() → "HELLO"toLowerCase()소문자로 변환"HELLO".toLowerCase() → "h..
DFS(깊이 우선 탐색)와 BFS(너비 우선 탐색)는 그래프 탐색 알고리즘의 대표적인 방식입니다.1. DFS (Depth-First Search, 깊이 우선 탐색)DFS는 한 노드를 방문하면 더 이상 갈 수 없을 때까지 깊이 들어가는 방식으로 탐색하는 알고리즘입니다.스택(Stack)이나 재귀(Recursion)을 이용해서 구현할 수 있습니다.DFS 코드import java.util.*;public class GraphDFS { private int vertices; // 노드 개수 private LinkedList[] adjList; // 인접 리스트 // 그래프 초기화 public GraphDFS(int v) { vertices = v; adjList = ..

Java에서 최대공약수(GCD) 및 최소공배수(LCM) 를 구하는 방법을 자세히 알아보자. 1. 최대공약수(GCD) 구하는 방법🔹 유클리드 호제법 (Euclidean Algorithm)최대공약수를 구하는 가장 효율적인 알고리즘 중 하나는 유클리드 호제법입니다.📌 유클리드 호제법 개념두 수 a와 b가 있을 때, a를 b로 나눈 나머지를 r이라고 하면,GCD(a, b) = GCD(b, r) 와 같습니다.이 과정을 나머지가 0이 될 때까지 반복하면, 남은 수가 최대공약수입니다. 🔹 유클리드 호제법의 예제예를 들어, **GCD(48, 18)**을 구하는 과정:48 ÷ 18 = 2 ... 나머지 1218 ÷ 12 = 1 ... 나머지 612 ÷ 6 = 2 ... 나머지 0➡️ 따라서 GCD(48, 18) =..

문제와 입출력 예제는 다음 그림과 같다. 해당 문제는 난이도가 1레벨이고 쉬운 문제지만 기본기와 놓치기 쉬운 에러를 잡는데 도움이 된다. 최초 답안지class Solution { public int solution(String t, String p) { int answer = 0; int tlen = t.length(); int plen = p.length(); int parseP = Integer.parseInt(p); for(int i=0; i 위 소스로 제출하니 테스트케이스는 잘 맞았지만, 최종 제출 시 런타임 에러가 몇개 씩 발견 되었다.가만히 이유를 생각해보니 문자열의 길이가 최대 10,000이지 1만 자리의 ..
얕은 복사와 깊은 복사에 대해서 설명해주세요. 자바에서 객체를 복사할 때 얕은 복사와 깊은 복사라는 두 가지 방식이 있습니다. 먼저 Book과 Author라는 두 클래스를 사용해서 예제를 살펴볼게요. Book은 책의 이름(name)과 저자(author) 정보를 가지고 있고, Author는 저자의 이름을 가지고 있습니다. class Book { private String name; // 책 이름 private Author author; // 저자 public Book(String name, Author author) { this.name = name; this.author = author; } public Book shallowCopy() { // 얕은 ..