분류 전체보기 233

[Java] instanceof 키워드 보단 다형성을 이용하자!

이번 포스팅에서는 instanceof 키워드란 무엇인지 그리고 해당 키워드 사용을 지양해야 하는 이유에 대해 알아보도록 하겠습니다. 핵심 정리 instanceof 키워드를 자주 사용하는 것은 캡슐화, 단일 책임 원칙, 개방-폐쇄 원칙을 위배할 수 있기 때문에 사용을 지양하고, 대신 다형성을 이용하는 것을 권장합니다. instanceof 란? object instanceof type은 객체가 특정 타입의 인스턴스인지를 확인하기 위한 연산자입니다. 이 연산자를 사용하면 런타임에 객체의 타입을 확인할 수 있습니다. 만약 어떤 타입에 대한 instanceof연산의 결과가 true라면 검사한 타입으로 형변환이 가능하다는 것을 뜻합니다. class Animal {} class Dog extends Animal {}..

Java 2023.12.04

[CS 모의면접 스터디] 스프링 편

23.11.30 CS 모의면접 스터디 에서 사용할 질문&예상답변을 정리하였습니다. 키워드 JPA(ORM), Hibernate, Spring Data JPA JPA의 N+1문제 필터와 인터셉터 주요 어노테이션(@Component, @Service, @Repository, @Controller) Spring Security WAS vs. WS 프로그래밍 패러다임(객체지향 프로그래밍, 절차형 프로그래밍, 함수형 프로그래밍..) Q. JPA, Hibernate, Spring Data JPA 차이점에 대해 말씀해 주세요. JPA는 Java에서 객체-관계 매핑(ORM)을 위한 표준 명세인 인터페이스입니다. JPA는 Java Persistence API의 약자로, 자바 애플리케이션에서 관계형 데이터베이스를 사용하는 ..

[Java] equals()와 hashCode()를 같이 재정의 해야하는 이유

요즘 모의 면접 스터디를 진행하고 있습니다. 이번주 자바 관련 질문을 주고받을 때 객체의 동일성과 동등성에 대한 질문에 저는 이렇게 대답했습니다. 🤔 객체의 동일성과 동등성의 개념에 대해 아시나요? "동일성은 두 객체가 정말 동일한 객체인지, 즉 같은 메모리 주소를 가졌는지의 여부를 확인합니다. 동등성은 두 객체의 값이 같은지 비교합니다. 자바에서는 ==연산자를 통해서 두 객체의 동일성을 비교할 수 있고, equals()를 통해 두 객체의 동등성을 비교할 수 있습니다. 여기서 주의할 점은 equals()를 따로 오버라이드 하지 않으면 두 객체의 hashCode() 값을 비교하게 되므로 두 객체의 equals(), hashCode() 모두 오버라이드 해야 합니다." 그 당시에는 이렇게 답변을 하고 마무리를..

Java 2023.11.20

[CS 모의면접 스터디] 자바 편

23.11.16 CS 모의면접 스터디 에서 사용할 질문&예상답변을 정리하였습니다. Q. 자바에서 String을 초기화하는 방법에는 두 가지가 있습니다. 두 가지 방법에 대해 설명부탁드립니다. 리터럴 방식과 new키워드를 사용하는 방식이 있습니다. [꼬리질문] 그럼 두 방식의 차이점은 무엇일까요? 둘 다 문자열을 생성하지만, 방식에 따라 저장되는 위치가 다릅니다. 리터럴을 사용해 선언 및 생성을 하면 해당 문자열은 StringConstantPool에 저장되고 추후 같은 문자열을 생성하려고하면 먼저 StringConstantPool 안을 찾아본 후 같은 문자열이 있다면 같은 주소값을 반환합니다. 반면 new 키워드를 사용하면 해당 문자열은 Heap영역에 저장되며, 객체를 생성할 때마다 Heap영역 안에 새롭..

[Java] String을 초기화하는 방법 - 성능 비교

자바에서 String을 초기화하는 방법에는 두 가지가 있습니다. 1. String a = "Hello"; // 리터럴 사용 2. String a = new String("Hello"); // new키워드 사용 두 방식의 차이점은 무엇일까요? 둘 다 Hello라는 문자열이 생성되지만 방식에 따라 저장되는 위치가 다릅니다. 첫 번째 방법인 리터럴로 선언하면, Hello값을 StringConstantPool에 넣고 참조변수 a는 이를 가리킵니다. (a는 값이 아닌 참조형입니다.) 두 번째 방법으로 new키워드를 사용하면 Hello는 더 이상 StringConstantPool이 아닌 Heap영역에 생성되고 참조변수 a가 이를 가리키게됩니다. 🧐 [정리] 리터럴로 객체를 생성: StringConstantPool을..

Java 2023.11.13

[Java] 자바 변수 타입별 메모리 저장 위치 및 GC 동작원리

이번 포스팅을 통해 자바 변수 타입별 메모리 저장 위치 및 GC의 동작원리에 대해 살펴보겠습니다. 변수의 종류 변수란 하나의 값을 저장할 수 있는 메모리 공간입니다. 변수의 종류에는 primitive type과 reference type이 있으며 기본형 8개를 제외하면 모두 reference type입니다. primitive type (기본형 타입) boolean, char, byte, short, int, long, float, double 변수 저장 위치 primitive type과 reference type은 메모리 어느 영역에 저장이 될까요? primitive type 변수는 stack 영역, reference type변수는 heap 영역에 저장되는데, 그렇다면 여기서 추가적으로 드는 의문이 있습..

Java 2023.11.06

등비수열의 합

class Solution { public int solution(int n) { int firstTerm = 1; // 첫 항 int commonRatio = 2; // 공비 int sum = calculateGeometricSeriesSum(firstTerm, commonRatio, n); int moduloSum = sum % 1_000_000_007; return moduloSum; } // 등비수열의 합 계산 함수 public int calculateGeometricSeriesSum(int firstTerm, int commonRatio, int n) { int MOD = 1_000_000_007; int sum = 0; int currentTerm = firstTerm; for (int i =..

짝수는 싫어요

https://school.programmers.co.kr/learn/courses/30/lessons/120813?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 정답 코드 import java.util.Collections; import java.util.ArrayList; class Solution { public ArrayList solution(int n) { // 매개변수 n을 for문을 돌면서 홀수만 배열에 담는다 ArrayList answer = new ArrayList(); for(int i =1; i