아래 의 것들 은 모두 비교적 고 급 스 러 운 문제 라 고 할 수 있 습 니 다. 면접 에서 도 일반적으로 묻 지 않 습 니 다. 왜냐하면 그들 은 면접 자 를 문 밖으로 내 쫓 을 수 있 기 때 문 입 니 다.대신 시간 을 내 서 실천 해 보 세 요.1. System. exit (0) 은 finally 블록의 실행 을 건 너 뜁 니 다
System.setSecurityManager(new SecurityManager() {
@Override
public void checkExit(int status) {
throw new ThreadDeath();
}
});
try {
System.exit(0);
} finally {
System.out.println("In the finally block");
}
이 코드 는 왜 In the finally block 을 출력 합 니까?왜 스 택 추적 정 보 를 인쇄 하지 않 았 습 니까?2. String str = "Hello"; str 는 문자열 의 대상 입 니 다. C + + 와 달리 자바 의 변 수 는 기본 형식 이거 나 참조 입 니 다. 변 수 는 대상 일 수 없습니다. 이러한 표현 식 을 의미 합 니 다.
String str = "Hello";
String text = "Bye";
str == text; // ,
str = text; // text str
대부분의 경우 큰 차이 가 없 지만 이렇게 쓰 면 곤 혹 스 럽 기 쉽다.
final StringBuilder sb = new StringBuidler();
sb.append("Hello"); // final , 。
method(sb); // ,
자바 의 메모리 유출 은 C + + 프로그래머 가 이해 하 는 것 과 마찬가지 로 위 키 백과 에 서 는 "컴퓨터 과학 에서 프로그램 이 메모리 할당 을 제대로 관리 하지 않 으 면 메모리 유출 이 발생 한다. 대상 을 대상 으로 프로 그래 밍 할 때 메모리 의 한 대상 이 코드 에 접근 하지 못 하면 메모리 유출" 이 라 고 정의 한다. 그러나 자바 에 서 는 대상 이 코드 에 접근 하지 못 한다.항상 접근 할 수 있 습 니 다. 강 한 인용 이 없 는 대상 은 삭 제 됩 니 다. 메모리 유출 이라는 용 어 는 자바 에 존재 하지 말 아야 할 대상 이 존재 합 니 다. 일반적으로 사용 하지 않 는 자원 이 집합 에 저장 되 어 있 습 니 다.
다 중 스 레 드 프로 그래 밍 이 어렵 습 니 다. 경험 이 없다 면 다 중 스 레 드 프로 그래 밍 은 정말 어 려 울 것 입 니 다. 코드 를 한 무더기 의 스 레 드 에 던 져 서 실행 하 는 것 이 라면 문제 가 해결 되 지 않 고 엉망 일 수 밖 에 없습니다. 하지만 스 레 드 를 필요 에 따라 분배 하고 스 레 드 간 의 상호작용 을 제어 할 수 있다 면 팀 원 들 도 알 수 있 는 간단 한 모델 을 사용 하면 문제 가 훨씬 간단 해 집 니 다.물론 또 하나의 도전 은 팀 의 모든 사람들 이 당신 의 이 규칙 을 따라 야 한 다 는 것 입 니 다. -)
서로 다른 조작 간 의 성능 에 신경 쓰 지 마 세 요. 최근 에 들 은 문제 가 있 습 니 다. 정수 추가, 메모리 접근, 모델 링, 콘 솔 로 출력 하 는 것 과 관련 이 있 습 니 다. 비록 이 조작 들 중 하 나 는 앞의 것 보다 수량 급 이 느 리 지만 이 형 제 는 이 중에서 가장 빠 른 조작, 덧셈 을 최적화 시 키 고 더 비 싼 조작 으로 바 꾸 려 고 합 니 다. 예 를 들 어.만약 당신 이 정말 성능 을 최적화 하려 고 한다 면, 당신 은 저렴 한 조작 으로 비 싼 조작 을 교체 하 는 것 이 좋 습 니 다. 만약 당신 의 병목 이 하드웨어 라 는 곳 에 있다 면, 예 를 들 어 하드디스크 에서 대량의 파일 을 읽 어야 합 니 다. 소프트웨어 의 코드 를 수정 하 는 것 은 소 용이 없습니다. 문 제 는 여기에 없 기 때 문 입 니 다.
난수 가 모두 랜 덤
한 조 의 특정한 랜 덤 수 는 마치 어떤 패턴 의 숫자 와 같다. 이 문 제 는 내 가 이 글 에서 이미 말 한 적 이 있다. 많은 사람들 이 랜 덤 생 성기 가 만 든 숫자 가 사실 랜 덤 이 아니 라 고 믿 지 않 는 다.
부동 소수점 을 사용 하 는 것 을 피해 야 합 니 다. 무 작위 오류 가 발생 할 수 있 기 때 문 입 니 다
같은 조작 에 있어 서 부동 소수점 은 매번 같은 오류 가 발생 합 니 다. 오 류 는 예측 할 수 있 기 때문에 제어 할 수 있 습 니 다. 만약 당신 이 해 야 할 일이 무엇 인지 잘 알 고 있 으 며, 결과 에 대해 반올림 을 하 는 등 간단 한 규칙 을 고집 한다 면 부동 소수점 에서 나 오 는 오 류 는 BigDecimal 보다 많 지 않 을 것 입 니 다. 그 외 에 도 가 독성 이 강하 고 효과 도 있 습 니 다.확률 이 백 배 이상 빨 라 졌 다.
시간 대 는 영원히 변 하지 않 는 다
이 오 해 는 시간 이 지 날수 록 시간 대가 바 뀌 고 있 기 때문이다. 유럽 / 런던 이 신기원 에 있 을 때 는 00: 00 이 아 닌 1970 / 1 / 1 01: 00 이 었 다 는 뜻 이다. 왜 냐? 런던 은 1968 년 부터 1971 년 까지 2 년 동안 여름 을 사 용 했 기 때문이다. 지난 몇 년 간 많은 시간 대도 달 라 졌 다. 모스크 바 는 이전 에는 동 3 구 (GMT + 3) 였 으 나 지금 은 동 4 구 (GMT + 4) (2011 년 3 월 27 일부 터) 였 다. 2010 년 을 보면 동 4 구가 아 닌 동 3 구 였 다. 또 어떤 일 들 은 당신 이 듣 기 에 매우 의외 라 고 느 낄 수도 있 습 니 다.
1721 년 스웨덴 의 2 월 은 30 일이 다.
1751 년 잉글랜드 의 첫날 은 3 월 25 일 로 프랑스 에 비해 11 일 차이 가 났 다.
미국 은 양력 으로 해 를 기록 한 후에 100 년 을 거 슬러 올 라 갔다. 이렇게 기 록 된 날 짜 는 모두 두 가지 달력 으로 표시 할 수 있다. 예 를 들 어 조지 워싱턴 의 생일 은 1731 년 2 월 11 에서 1732 년 2 월 22 로 바 뀌 었 다.
스 레 드 에서 비 volatile 변 수 를 읽 을 때 업 데 이 트 된 값 을 읽 을 수 있 습 니 다.
며칠 전에 이 문 제 는 StackOverflow 에서 두 번 발생 했 습 니 다. 일반적으로 JIT 컴 파일 러 는 코드 를 최적화 할 때 이 스 레 드 가 수정 되 지 않 은 비 volatile 형식의 필드 를 내부 연결 합 니 다. 이 코드 가 컴 파일 되면 (- XX: + PrintCompilation 을 통 해 볼 수 있 습 니 다)다른 스 레 드 에서 이 필드 를 수정 하면 영원히 볼 수 없 을 것 입 니 다. 게다가 무 작위 동기 화 블록 이나 인쇄 문 구 는 이 최적화 실행 을 지연 시 키 거나 JIT 컴 파일 러 를 어 지 럽 혀 서 이 최적화 를 실행 하지 않도록 할 수 있 습 니 다.
자바 면접 문 제 는 모두 정확 하 다
많은 자바 면접 문 제 는 유행 이 지 났 거나 (10 년 이 넘 도록 업데이트 되 지 않 았 거나 현재 자바 버 전과 어 긋 났 다) 여러분 을 오도 하거나 틀 렸 을 수도 있 습 니 다. 불행 하 게 도 이 답 들 은 검사 도 하지 않 고 여기저기 서 들 려 왔 습 니 다. 저 는 Stackoverflow 위의 답 을 참고 하 겠 습 니 다. 왜냐하면 이곳 의 답 은 동행 심사 가 더 잘 되 기 때 문 입 니 다. 전체적으로 rose india 와 같은 사 이 트 는 올 라 가지 마 세 요. 위의 답 은 질 이 떨 어 집 니 다. 꼬치 꼬치 캐 묻 는 것 을 좋아한다 면 위의 글 에 맞 춤 법 오류 (유형 명 및 전문 용어) 가 얼마나 있 는 지 볼 수 있 습 니 다.혹은 잘못된 언론. 이런 문제 들 이 존재 하 는 이 유 는 이러한 오 류 를 바로 잡 을 효과 적 인 피드백 메커니즘 이 없 기 때문이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다: