고전적인 Java 면접 질문 모음(3)

王林
풀어 주다: 2020-07-07 16:54:26
앞으로
2127명이 탐색했습니다.

고전적인 Java 면접 질문 모음(3)

1. String, StringBuffer 및 StringBuilder의 차이점

(권장 관련 튜토리얼:java 인터뷰 질문)

String의 값은 변경할 수 없으므로 String에 대한 각 작업의 결과로 새 문자열이 생성됩니다. .문자열 객체.

StringBuffer 및 StringBuilder 클래스의 개체는 사용되지 않는 새 개체를 생성하지 않고도 여러 번 수정할 수 있습니다.

속도는 다음과 같습니다. StringBuilder > StringBuffer > String

StringBuilder 클래스와 StringBuffer의 가장 큰 차이점은 StringBuilder 메서드가 스레드가 아니라는 것입니다. 안전한.

그림을 보세요:

고전적인 Java 면접 질문 모음(3)

(추천 튜토리얼:java 입문 프로그램)

2. 모든 클래스는 객체 클래스에서 상속됩니다. 객체 클래스가 일반적으로 사용됩니다. 방법은 무엇입니까?

  • Boolean

  • Character

  • Class

  • ClassLoader

  • Compiler

  • Enum

  • String

  • System

  • Thread

Object 클래스의 일반적인 메서드

  • toString();

  • equals();

  • hashCode();

이익?

은 객체를 생성하거나 메서드를 호출할 때까지 유형 설명 작업을 연기하는 특수 유형입니다.

매개변수화된 유형, 유형을 매개변수로 전달합니다. 다양한 컨테이너 등 다형성을 매우 잘 지원하는 디자인 패턴입니다.

이점:

컴파일 시간 문제를 개선하여 강제 유형 변환을 방지합니다.

4. Java 객체 직렬화에 serialversionUID를 사용해야 하는 이유는 무엇입니까?

1. 객체를 직렬화하는 이유

  • 객체를 바이트 시퀀스로 변환하는 과정을 객체 직렬화라고 합니다.

  • 바이트 시퀀스를 객체로 복원하는 과정을 객체 역직렬화라고 합니다

2. 객체 직렬화에는 두 가지 주요 용도가 있습니다.

(1) 객체의 바이트 시퀀스를 일반적으로 파일에 하드 디스크에 영구적으로 저장합니다.

(2) 네트워크 바이트 시퀀스에서 객체를 전송합니다.

3. SerialversionUID를 사용하는 이유

사용자가 serialVersionUID를 직접 선언하지 않으면 인터페이스는 기본적으로 serialVersionUID를 생성합니다. 객체에 새 필드가 추가되면 시스템에서 할당한 serialversionUID가 변경됩니다. 역직렬화 예외.

(추천 동영상 튜토리얼:java 동영상 튜토리얼)

5. 리플렉션의 장점과 단점

1. 장점

Reflection은 Java 프로그램의 유연성과 확장성을 향상시키고, 결합을 줄이고, 적응 능력을 향상시킵니다. 이를 통해 프로그램은 하드 코딩된 대상 클래스를 올리지 않고도 모든 클래스의 개체를 생성하고 제어할 수 있습니다.

Reflection은 C, C++, Fortran 또는 Pascal과 같이 일반적으로 사용되는 다른 언어에서는 사용할 수 없습니다.

Java 반사 기술은 소프트웨어 테스트, JavaBeans 등과 같은 광범위한 응용 프로그램을 가지고 있습니다.

Struts, Hibernate 및 Spring과 같은 많은 인기 있는 오픈 소스 프레임워크는 구현에 이 기술을 사용합니다.

2. 단점

(1) 성능 오버헤드

Reflection에는 일부 동적 유형이 포함되어 있으므로 JVM은 이러한 코드를 최적화할 수 없습니다. 따라서 반사 작업은 비반사 작업보다 훨씬 덜 효율적입니다. 자주 실행되는 코드나 고성능 요구 사항이 있는 프로그램에서는 리플렉션을 사용하지 않아야 합니다.

(2) 보안 제한

반사 기술을 사용하려면 프로그램이 보안 제한이 없는 환경에서 실행되어야 합니다. 이는 애플릿과 같이 보안이 제한된 환경에서 프로그램을 실행해야 하는 경우 문제가 됩니다. .

(3) 내부 노출

리플렉션을 사용하면 코드가 일반적인 상황에서 허용되지 않는 일부 작업(예: 개인 속성 및 메서드 액세스)을 수행할 수 있으므로 리플렉션을 사용하면 예상치 못한 부작용이 발생할 수 있습니다. 코드에 이식성을 감소시키는 기능적 오류가 있습니다. 반사 코드는 추상화를 깨뜨리므로 플랫폼이 변경되면 코드 동작도 변경될 수 있습니다.

위 내용은 고전적인 Java 면접 질문 모음(3)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:csdn.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!