2017년 6월 7일 날씨가 맑음에서 흐려졌습니다. 나는 기분이 좋다.
지난 토요일에 첫 필기 시험을 쳤는데, 주로 기초 지식이 부족해서 많이 아쉬웠어요. 이제 앞으로 쉽게 참고할 수 있도록 필기 시험의 몇 가지 문제를 다음과 같이 요약했습니다.
1.GC란 무엇인가요? 왜 GC인가?
GC(GarbageCollection)는 가비지 수집 메커니즘입니다. Java에서는 개발자가 포인터를 사용하여 메모리를 자유롭게 관리할 수 없습니다. GC는 JVM이 메모리(실제로는 객체)를 관리하는 방식입니다. JVM(Java Virtual Machine)은 자동으로 가비지를 확인하고 수집할 수 있지만 일반적으로 메모리 공간을 즉시 해제하지 않습니다. 프로그램에서 System.gc()를 사용하여 가비지 수집을 강제할 수도 있지만 시스템이 이를 보장하지는 않습니다. 즉시 메모리를 해제합니다. GC를 사용하면 Java 개발자는 지루한 메모리 관리 작업을 없애고 프로그램 개발을 보다 효율적으로 만들 수 있습니다.
GC의 기본 원칙:
Java의 메모리 관리는 실제로 객체 할당 및 해제를 포함한 객체 관리입니다.
프로그래머의 경우 new 키워드를 사용하여 개체를 할당합니다. 개체를 해제할 때 개체에 대한 모든 참조를 null로 할당하면 프로그램이 더 이상 개체에 액세스할 수 없습니다. GC는 "접근할 수 없는" 모든 개체의 메모리 공간을 회수하는 일을 담당합니다.
GC의 경우 프로그래머가 객체를 생성하면 GC는 객체의 주소, 크기 및 사용법을 모니터링하기 시작합니다. 일반적으로 GC는 방향성 그래프를 사용하여 힙의 모든 개체를 기록하고 관리합니다. 이러한 방식으로 어떤 개체가 "접근 가능"하고 어떤 개체가 "접근 불가능"한지 결정됩니다. GC가 일부 개체에 "접근할 수 없음"을 확인하면 GC는 이러한 메모리 공간을 회수해야 합니다. 그러나 GC가 다양한 플랫폼에서 구현될 수 있도록 하기 위해 Java에는 많은 GC 동작에 대한 엄격한 규정이 없습니다. 예를 들어, 어떤 종류의 재활용 알고리즘을 사용할지, 언제 재활용을 수행할지 등 중요한 문제에 대한 명확한 규정이 없습니다. 따라서 서로 다른 JVM 구현자는 서로 다른 구현 알고리즘을 사용하는 경우가 많으며 이는 Java 프로그래머의 개발에 많은 불확실성을 가져옵니다.
2. 인터페이스와 추상 클래스의 차이점은 무엇인가요?
인터페이스는 액션의 추상화이고, 추상 클래스는 루트의 추상화입니다. 추상 클래스는 이 객체가 무엇인지 나타냅니다. 인터페이스는 이 개체가 수행할 수 있는 작업을 나타냅니다. 예를 들어 남성과 여성, 이 두 클래스(클래스인 경우)의 추상 클래스는 사람입니다. 설명: 그들은 모두 인간이다. 사람도 먹을 수 있고, 개도 먹을 수 있습니다. "먹기"를 인터페이스로 정의한 다음 이러한 클래스에서 이를 구현하도록 할 수 있습니다. 따라서 고급 언어에서 클래스는 하나의 클래스(추상 클래스)만 상속할 수 있지만(사람이 생물이면서 동시에 무생물이 될 수 없는 것처럼) 여러 인터페이스(먹는 인터페이스)를 구현할 수 있습니다. , 걷기 인터페이스).
사물의 본질에 집중할 때는 추상 클래스를 사용하고, 작업에 집중할 때는 인터페이스를 사용하세요.
(1) 추상 클래스나 인터페이스는 모두 직접 인스턴스화할 수 없습니다. 인스턴스화하려면 추상 클래스 변수는 모든 추상 메서드를 구현하는 하위 클래스 개체를 가리켜야 하고, 인터페이스 변수는 모든 인터페이스 메서드를 구현하는 클래스 개체를 가리켜야 합니다. .
(2) 추상 클래스는 서브클래스에서 상속되어야 하며, 인터페이스는 서브클래스에서 구현되어야 합니다.
(3) 인터페이스는 메서드 선언만 만들 수 있는 반면 추상 클래스는 메서드 선언과 메서드 구현을 만들 수 있습니다.
(4) 인터페이스에 정의된 변수는 공개 정적 상수만 될 수 있으며 추상 클래스의 변수는 일반 변수입니다.
(5) 추상 클래스의 모든 추상 메서드는 하위 클래스에서 구현되어야 합니다. 하위 클래스가 상위 클래스의 모든 추상 메서드를 구현할 수 없는 경우 하위 클래스는 추상 클래스만 될 수 있습니다. 마찬가지로, 클래스가 인터페이스를 구현할 때 모든 인터페이스 메서드를 구현할 수 없다면 클래스는 추상 클래스만 될 수 있습니다.
(6) 추상 메소드는 선언만 가능하고 구현은 불가능합니다. 인터페이스는 설계의 결과이고 추상 클래스는 재구성의 결과입니다.
(7) 추상 클래스에는 추상 메서드가 필요하지 않습니다.
(8) 클래스에 추상 메서드가 있는 경우 이 클래스는 추상 클래스만 될 수 있습니다.
(9) 추상 메서드는 구현되어야 하므로 정적이거나 비공개일 수 없습니다.
(10) 인터페이스는 인터페이스를 상속할 수 있고 여러 인터페이스를 상속할 수 있지만 클래스는 단일 루트에서만 상속할 수 있습니다.
(11) 추상 클래스와 인터페이스는 모두 특정 객체를 추상화하는 데 사용되지만 인터페이스의 추상화 수준이 가장 높습니다.
(12) 추상 클래스는 특정 메서드와 속성을 가질 수 있는 반면, 인터페이스는 추상 메서드와 불변 상수만 가질 수 있습니다.
(13) 추상 클래스는 주로 범주를 추상화하는 데 사용되고 인터페이스는 주로 함수를 추상화하는 데 사용됩니다.
(14) 추상 클래스에서 메서드에 구현이 포함되어 있지 않으면 파생 클래스가 이를 재정의해야 합니다. 인터페이스의 모든 메서드는 구현되지 않아야 합니다.
3. 마이바티스가 반자동 ORM 매핑 도구라고 불리는 이유는 무엇인가요? 완전 자동과 차이점은 무엇입니까?
Hibernate는 완전 자동 ORM 매핑 도구입니다. Hibernate를 사용하여 관련 객체 또는 관련 컬렉션 객체를 쿼리할 때 객체 관계 모델을 기반으로 직접 얻을 수 있으므로 완전 자동입니다. 마이바티스가 연관 객체나 연관 컬렉션 객체를 쿼리할 때 SQL로 수동으로 작성해야 하므로 반자동 ORM 매핑 도구라고 부른다.
위 내용은 JAVA 필기시험에 나오는 몇 가지 문제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!