BJSNuruhee / levelup

0 stars 0 forks source link

2023.11.08 퀴즈 #1

Closed BJSNuruhee closed 9 months ago

BJSNuruhee commented 11 months ago

본 퀴즈는 모르면 모른다고 적으면 되고, 굳이 검색을 해서 답을 적을 필요는 없음.

다음 퀴즈에서는 적지 못한 답에 대해 다시 질문할 것이니 부담감을 갖지 않기를 바람.

Springboot

image

image

Vue

yejun95 commented 11 months ago

Springboot

✔ java, Spirng, Springboot에 대해서 서술해보세요.

java

Spring

Springboot

✔ application.properties는 무슨 역할인가요?

✔ 로컬, 개발, 운영에 따라 application.properties를 나눠쓰고 싶은데 어떻게 하면 될까요? ( 실제 프로젝트에도 적용 바람)

✔ MVC 패턴에 대해서 간단하게 설명하세요

✔ DTO, DAO의 개념은 무엇인가요?

✔ Maven은 정확히 무엇을 뜻하고 뭘하는 걸까요?

✔ TestApplication.java와 TestApplicationTests.java의 차이

✔ pom.xml의 역할은 무엇이고 안에 구조는 어떻게 되어있을까요?

Vue

✔ npm과 node의 역할은 무엇인가요

✔ vue-cli란 무엇인가요?

✔ vite란 무엇인가요?

✔ vite.config.js 파일의 역할은?

✔ package.json 파일의 역할은?

✔ package-lock.json 파일의 역할은?

✔ index.js 파일의 역할은?

✔ main.js 파일의 역할은?

✔ App.vue와 index.html의 역할에 따라 클라이언트 요청과 프론트는 어떻게 구성이 되는가에 대한 라이프사이클 설명

✔ npm의 역할

yejun95 commented 11 months ago

java에서 어떤 것에 대한 종속성이 없는가?

yejun95 commented 11 months ago

Spring에는 MVC 패턴만 있는가?

대표적인 Spring 디자인 패턴의 종류

✔ Singleton pattern

Singleton Beans

image

Autowired Singletons

@RestController
public class LibraryController {

    @Autowired
    private BookRepository repository;

    @GetMapping("/count")
    public Long findCount() {
        System.out.println(repository);
        return repository.count();
    }
}
@RestController
public class BookController {

    @Autowired
    private BookRepository repository;

    @GetMapping("/book/{id}")
    public Book findById(@PathVariable long id) {
        System.out.println(repository);
        return repository.findById(id).get();
    }
}




✔ Factory Method pattern

image

✔ Proxy pattern

image

장점

단점

예제 소스

Image.java(interface)

public interface Image {
   void displayImage();
}



Real_Image.java

public class Real_Image implements Image {

    private String fileName;

    public Real_Image(String fileName) {
        this.fileName = fileName;
        loadFromDisk(fileName);
    }

    private void loadFromDisk(String fileName) {
        System.out.println("Loading " + fileName);
    }

    @Override
    public void displayImage() {
        System.out.println("Displaying " + fileName);
    }
}



Proxy_Image.java

public class Proxy_Image implements Image {
    private Real_Image realImage;
    private String fileName;

    public Proxy_Image(String fileName) {
        this.fileName = fileName;
    }

    @Override
    public void displayImage() {
        if (realImage == null) {
            realImage = new Real_Image(fileName);
        }
        realImage.displayImage();
    }
}



Proxy_Main.java

public class Proxy_Main {
    public static void main(String[] args) {
        Image image1 = new Proxy_Image("test1.png");
        Image image2 = new Proxy_Image("test2.png");

        image1.displayImage();
        System.out.println();
        image2.displayImage();
    }
}



image

✔ Template Method Pattern

장점

단점

예제 소스

//추상 클래스 선생님
abstract class Teacher{

    public void start_class() {
        inside();
        attendance();
        teach();
        outside();
    }

    // 공통 메서드
    public void inside() {
        System.out.println("선생님이 강의실로 들어옵니다.");
    }

    public void attendance() {
        System.out.println("선생님이 출석을 부릅니다.");
    }

    public void outside() {
        System.out.println("선생님이 강의실을 나갑니다.");
    }

    // 추상 메서드
    abstract void teach();
}

// 국어 선생님
class Korean_Teacher extends Teacher{

    @Override
    public void teach() {
        System.out.println("선생님이 국어를 수업합니다.");
    }
}

//수학 선생님
class Math_Teacher extends Teacher{

    @Override
    public void teach() {
        System.out.println("선생님이 수학을 수업합니다.");
    }
}

//영어 선생님
class English_Teacher extends Teacher{

    @Override
    public void teach() {
        System.out.println("선생님이 영어를 수업합니다.");
    }
}

public class Main {
    public static void main(String[] args) {
        Korean_Teacher kr = new Korean_Teacher(); //국어
        Math_Teacher mt = new Math_Teacher(); //수학
        English_Teacher en = new English_Teacher(); //영어

        kr.start_class();
        System.out.println("----------------------------");
        mt.start_class();
        System.out.println("----------------------------");
        en.start_class();
    }
}

image

Reference

carrots-day : Spring.02.디자인 패턴
newtownboy : proxy pattern

yejun95 commented 11 months ago

TestApplication.java와 TestApplicationTests.java의 차이

✔ TestApplication.java

@SpringBootApplication
public class TestApplication {

    public static void main(String[] args) {
        SpringApplication.run(TestApplication.class, args);
    }

}


- 즉, 스프링부트를 실행시키기 위한 java 파일인 것이다.

image



✔ TestApplicationTests.java

image