목록전체 글 (73)
delpho
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/nDwLX/btrFchOx7ad/Fj7bIIOH7lJOkRuaY9Kig0/img.png)
_1. 데이터베이스에서 인덱스를 사용하는 이유 및 장단점에 대해 설명해주세요. 더보기 데이터베이스에서 인덱스를 사용하는 이유는 검색 성능을 향상시키기 위함이다. (검색 성능을 실질적으로 향상시키기 위해서 해당 쿼리가 index를 사용하는지, 카디널리티 또는 selectivity와 같은 요소들이 고려된 인덱스가 생성되어야 한다.) 인덱스를 사용하여 얻을 수 있는 장점으로는 빠른 검색 성능이 있고, 단점으로는 인덱스를 구성하는 비용 (추가, 수정, 삭제 연산시 인덱스를 형성하기 위해 필요한 추가적 연산)이다. 인덱스를 생성할 때 트레이드 오프 관계에 놓여있는 요소들을 종합적으로 고려하여 생성해야 한다. # 인덱스란? 데이터베이스의 테이블에 대한 검색 속도를 향상시켜주는 자료구조 테이블의 특정 컬럼(Colum..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bx8DeE/btrE758XEWc/Pmze4EtcsBeGKvvF2kWty0/img.png)
1. 스프링의 장점 (각 장점에 대해 자세히 기술할 것) # 스프링의 장점 1. POJO 기반의 구성 개발할 때, 개발자가 특정한 라이브러리나 컨테이너의 기술에 종속적이지 않음 Java코드를 이용해서 객체를 구성하는 방식 그대로 스프링에서 사용할 수 있음 자유롭게 객체지향적 설계를 구현 가능 높은 생산성과 유연한 테스트를 할 수 있다 2. DI을 통한 객체 관계 구성 IoC Container를 통해 객체 간의 느슨한 결합을 유지 유지보수가 편리해짐 3. 관점 지향 프로그래밍 (AOP) 메소드를 개발할 때 비즈니스 메소드마다 반복되는 공통로직을 분리 개발자가 비즈니스 로직에 집중 가능 공통 로직은 외부의 클래스로 분리 + 코드에 명시적으로 표시하지 않고 선언적으로 처리 공통 기능을 분리함으로써 응집도가 높..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bcmiTL/btrEuPFO16B/ryXsmxWcSDMPZZUCphIwM0/img.jpg)
1. 강한 결합과 느슨한 결합이 무엇인지 설명해주세요. # 의존성 어떤 클래스A가 다른 클래스(B) 또는 B의 인터페이스를 이용할때 A가 B에 의존한다고 한다. A는 B없이 작동할 수 없음 여기서 A는 dependant / B는 dependency라고 함 dependant는 자신의 dependencies들에게 의존 의존성이 높다는건(강하다는건) A객체를 수정했을때, 그 객체와 결합된 B에서도 코드를 수정해야되는 경우가 생기는 것 이때, 두 클래스는 결합(coupled)되어 있음. 두 클래스 사이의 결합은 강할수도, 느슨할 수도 있음 의존성이 강한지 약한지에 따라 달림 의존성, 결합은 방향이 존재 A가 B에게 의존한다고해서 B가 A에 꼭 의존적인것은 아님! # 결합도 서로 다른 모듈 간에 상호 의존하는 정..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/kXCrh/btrECBmtcHF/8ur8RCKgegiBpiL9zclgFk/img.png)
1. SOLID(객체지향 5대원칙)에 대해서 설명해주세요. # 객체지향 프로그래밍의 5가지 설계 원칙 (SOLID) SOLID = 객체지향 프로그래밍을 하면서 지켜야하는 5대 원칙 SRP(단일 책임 원칙), OCP(개방-폐쇄 원칙), LSP(리스코프 치환 원칙), DIP(의존 역전 원칙), ISP(인터페이스 분리 원칙) SOLID 원칙을 철저히 지킨다면? 시간이 지나도 변경 용이 유지보수와 확징이 쉬운 프로그램 개발 가능 1. SRP (단일 책임 원칙, Single Responsibility Principle) 하나의 모듈은 한 가지 책임을 가져야 한다는 것 즉, 모듈이 변경되는 이유가 한가지여야 함 어떤 클래스가 단 하나의 책임 만을 갖고 있다면, 특정 액터로부터 변경을 특정할 수 있으므로 해당 클래스..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/CepxI/btrD8iP2P4y/vw1tb46SFkDYLtBAozRgyk/img.png)
1. 인터페이스와 추상클래스의 차이점에 대해 설명해주세요. # 추상 클래스 클래스를 설계도에 비유한다면 추상 클래스는 미완성 설계도에 비유 추상 메서드를 선언하여 상속을 통해서 자손 클래스에서 완성하도록 유도하는 클래스 상속을 위한 클래스이기때문에 객채 생성 불가! # 추상 클래스 규칙 추상 클래스는 키워드 abstract를 붙여 표현 추상 메서드를 포함하지 않은 클래스에서도 abstract를 붙여서 추상 클래스로 지정할 수도 있음 클래스를 abstract로 지정하면 new를 통해 객체를 직접 생성할 수 없다. 메소드에 abstract를 사용할 경우 interface의 메소드와 같이 구현 부분은 없다. abstract로 선언한 메소드를 자식 클래스에서 반드시 구현해야 한다. (오버라이딩) 이는 자식 클래..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/WiETq/btrEeYvANFW/mRaDizgRgDDWPphyOOkR30/img.png)
1. JVM의 구조와 Java의 실행방식을 설명해주세요. # JVM ( Java Virtual Machine ) 자바와 운영체제 사이에서 중개자 역할을 수행 자바가 운영체제에 구애 받지 않고 프로그램을 실행할 수 있도록 도와줌 가비지 컬렉터를 사용한 메모리 관리도 자동으로 수행하며, 다른 하드웨어와 다르게 레지스터 기반이 아닌 스택 기반으로 동작 # 자바는 왜 JVM이 필요할까? Java 컴파일러는. java 파일을. class 파일로 컴파일한다. 이는. java 파일을 Java byte code로 변환하여. class 만드는 것인데 Byte Code는 기계어가 아니기 때문에 OS에서 바로 실행이 되지 않는다. 이를 해결하기 위해 JVM을 통해 .class 파일을 로드/해석하여 Java 프로그램을 실행하..