2023년 1월 1일
08:00 AM
Buffering ...

최근 글 👑

[TIL] 2024.08.13 [Java/Spring]

2024. 8. 13. 10:55ㆍ자바

하루에 4개씩!

더보기

1. 추상 클래스와 인터페이스를 설명해주시고, 차이에 대해 설명해주세요

  • 추상 클래스는 클래스 내 추상 메소드가 하나 이상 포함되거나 abstract로 정의된 경우를 말하고,
  • 인터페이스는 모든 메소드가 추상 메소드로만 이루어져 있는 것을 말한다.

  • 공통점
    • new 연산자로 인스턴스 생성 불가능
    • 사용하기 위해서는 하위 클래스에서 확장/구현 해야 한다.

  • 차이점
    • 인터페이스는 그 인터페이스를 구현하는 모든 클래스에 대해 특정한 메소드가 반드시 존재하도록
      강제함에 있고
    • 추상클래스는 상속받는 클래스들의 공통적인 로직을 추상화 시키고, 기능 확장을 위해 사용한다.
    • 추상클래스는 다중 상속이 불가능하지만, 인터페이스는 다중 상속이 가능하다.

 

2. 싱글톤 패턴에 대해 설명해주세요.

  • 싱글톤 패턴은 단 하나의 인스턴스를 생성해 사용하는 디자인 패턴입니다.
  • 인스턴스를 1개만 존재해야 한다는 것을 보장하고 싶은 경우와
  • 동일한 인스턴스를 자주 생성해야 하는 경우에 주로 사용한다(메모리 낭비 방지)
  • 싱글톤 패턴이란?

 

2-1 싱글톤 패턴의 대표적인 예시를 간단하게 설명해 주세요

  • 싱글톤 패턴의 대표적인 예시는 Spring Bean입니다.
  • 스피링 빈 등록 방식은 기본적으로 싱글톤 스코프이고, 스프링 컨테이너는 모든 빈들을 싱글톤으로 관리합니다.

 

3. 가비지 컬렉션(Garbage Collection)에 대해 설명해주세요

  • 가비지 컬렉션은 JVM의 메모리 관리 기법 중 하나로 시스템에서 동적으로 할당됐던 메모리 영역 중에서
    필요없어진 메모리 영역을 회수하여 메모리를 관리해주는 기법

 

3 -1 가비지 컬렉션 과정에 대해 설명해주세요

  • GC의 작업을 수행학시 위해 JVM이 어플리케이션의 실행을 잠시 멈추고, GC를 실행하는 쓰레드를 제외한 모든
    쓰레드들의 작업을 중단 후(Stop The World 과정) 사용하지 않는 메모리를 제거(Mark and Sweep 과정)하고
    작업이 재개됩니다.

 

4. 객체지향의 설계원칙(S.O.L.I.D)에 대해 설명해주세요

  1. SRP - 단일 책임 원칙 : 한 클래스는 하나의 책임만 가져야 한다.
  2. OCP - 개방-폐쇄 원칙 : 확장에는 열려있고, 수정에는 닫혀있어야 한다.
  3. LSP - 리스코프 치환 원칙 : 하위 타입은 항상 상위 타입을 대체 할 수 있어야 한다.
  4. ISP - 인터페이스 분리 원칙 : 인터페이스 내에 메소드는 최소한 일수록 좋다. (하나의 일반적인 인터페이스보다
    여러개의 구체적인 인터페이스가 낫다.) SRP와 같은 문제에 대한 두가지 다른 해결책이다.
  5. DIP - 의존관계 역전 원칙 : 구체적인 클래스보다 상위 클래스, 인터페이스, 추상클래스와 같이 변하지 않을
    가능성이 높은 클래스와 관계를 맺어라. DIP 원칙을 따르는 가장 인기 있는 방법은 의존성 주입(DI)이다.

 

초보 개발자를 위한 기초 영어 단어 20개

더보기

1. beside : ~의 곁에

2. bill : 계산서

3. bite : 물다

4. borrow : 빌다

5. both : 쌍방의

6. branch : 가지

7. bright : 밝은

8. burn : 시내

9. can : ~할 수 있다.

10. care : 걱정

11. certain : 확신하는

12. cheap : 값싼

13. clerk : 서기

14. clever :영리한

15. curious : 이상스러운
16. decide : 결정하다.

17. divide : 나누다

18. do : 하다

19. elementary : 기본의

20. guess : 추측하다.

 

[프로그래머스 문제 풀이]
1.수박수박수박수박수박수?

더보기

1. 문제 설명

  • 길이가 n이고, " 수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다.

2. 제한 조건

  • n은 길이 10,000 이하인 자연수이다.

3. 나의 풀이

class Solution{
	public String solution(int n){
    	//n은 길이가 10,000이하인 자연수이다.
        String answer = "";
        //n의 길이를 받은 값이 홀수이면 "수" 짝수이면 "박"
        
        //for문을 사용?
        for(int i = 0; i < n; i++){
        	//짝수인지 홀수인지를 구해야 한다.
            if(i % 2 ==0){
            	//짝수이면 박을 answer에 대입
            	answer += "박"
        	} else {
            	//홀수이면 "수"를 answer에 대입
        		answer += "수" 
        	}
        }
        //리턴 값을 반환
        return answer;
   	}
}

 

2. 가운데 글자 가져오기

더보기

1. 문제 설명

  • 단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데
    두글자를 반환하면 됩니다.

2. 제한 사항

  • s는 길이가 1 이상, 100 이하인 스트링입니다.

3. 나의 풀이

class Solution {
	public String solution(String s){
    	String answer = " ";
        
        //단어의 길이가 짝수라면 가운데 두 글자를 반환
        //단어의 길이 s.length();
        //짝수라면 if( ~ % 2 == 0)
        if(s.length() % 2 ==0){
        	//가운데 두 글자 반환
            //짝수 가운데 절반을 나눈 값이랑 나누고 -1한 값
            answer += s.charAt(s.length() / 2);
            answer += s.charAt(s.length() / 2 -1);
        } else {
        	answer += s.charAt(s.length() / 2);
        }
        return answer;
    }
}