면접문제 정리노트(一)

3986 단어 면접 문제
(본고의 면접문제는 자바 고급 교류군, 그룹주인 메소시가 제공) 기초:스트링류가 계승될 수 있을까, 왜?상속될 수 없다. 스트링 클래스는final 키워드로 수식되어 상속될 수 없다. 또한 스트링이 다른 사람에게 조심스럽거나 고의로 스트링, 스트링 버퍼, 스트링 버퍼의 차이를 상속하는 것을 방지하기 위해서다.String은 불변의 대상이라고 불리는데 String의 불변은value 대상의 불변,char[]value 대상의 불변을 가리킨다.한편,stringbuffer와stringbuilder의value 대상은 가변적이지만,stringbuffer는 라인이 안전합니다.stringbuilder는 라인이 안전하지 않습니다.
Array List와 Linked List는 어떤 차이가 있습니까?ArrayList는 동적 배열 기반의 데이터 구조를 실현하고LinkedList는 체인 테이블의 데이터 구조를 바탕으로 한다.2. get과 set에 무작위로 접근하는 것에 대해 Array List는 링크드 List보다 낫다고 생각한다. 왜냐하면 링크드 List는 바늘을 움직여야 하기 때문이다.3. 새로운 작업과 삭제 작업add와remove에 대해 LinedList가 비교적 우세하다. 왜냐하면 ArrayList가 데이터를 이동해야 하기 때문이다.이 점은 실제 상황을 보아야 한다.단일 데이터만 삽입하거나 삭제하면 ArrayList의 속도는 오히려 LinkedList보다 빠릅니다.그러나 대량의 무작위 삽입 삭제 데이터를 대량으로 삽입하면LinkedList의 속도는 ArrayList보다 훨씬 빠르다.
클래스의 실례화 순서, 예를 들어 부류 정적 데이터, 구조 함수, 필드, 부류 정적 데이터, 구조 함수, 필드, 그들의 실행 순서 클래스의 마운트->링크(검증->준비->해석)->초기화->대상 실례화.
1부류의 정적 초기화역, (주의해야 할 것은 클래스가 초기화되기 전에 클래스가 실례화되었다) 2부류의 정적 초기화역, (구성원 변수 초기화를 먼저 한 다음에 자신의 초기화를 한 다음static 코드 블록의 내용을 실행한다) 3부류의 비정적 초기화역,(은식 구조 코드를 먼저 실행하고 구조 방법의 코드를 실행한다. 여기 은식 구조 코드는 {} 코드 블록의 코드와 실례 구성원 변수 성명의 초기화 코드, 그리고 부류에 대응하는 코드를 포함한다.) 4부류의 구조 함수, 5부류의 비정상적 초기화역, 6부류의 구조 함수
public class TestList { public static void main(String[] args){ T t = new T(“init”); } }
class T implements Cloneable {public static int k = 0; {System.out.println ("첫 줄부터 지금까지 실행");public final static T t1 = new T(“t1”);
public static T t2 = new T("t2");
public static int i = print("i");
public static int n = 99;

public int j = print("j");
{
    print(" ");
}

static {
    print(" ");
}

; public T(String str) { System.out.println((++k) + “:” + str + ” i=” + i + ” n=” + n); ++n;++ i; }
public static int print(String str){
    System.out.println((++k) +":" + str + "   i=" + i + "   n=" + n);
    ++n;
    return ++ i;
}

첫 줄부터 지금까지 1:j i=0 n=0 2:구조가 빠르다 i=1 n=1 3:t1 i=2 n=2 첫 줄부터 지금까지 4:j i=3 n=3 5: 구조가 빠르다 i=4 n=4 6:t2 i=5 n=5 7:i i=6 8: 정적 블록 i=7 n=99 첫 줄부터 현재 9:j i=8 n=100 101 n=10 init i=102
어떤 맵을 사용했는지, 어떤 차이가 있는지, HashMap은 라인이 안전한지, 그리고 사용한 맵이 무엇인지, 그들의 내부 원리는 각각 무엇인지, 예를 들어hashcode,확장 등HashMap(스레드가 안전하지 않음)Hashtable(스레드가 안전하고 효율이 낮음,concurrentHashMap을 사용하는 것을 권장함)TreeMap(질서정연함)WeakHashMap(캐시 구축, 약한 인용용)ConcurrentHashMap(스레드가 안전하구나,hashtablel,volatile와 writeLock을 결합하여 사용하는 모범,그리고 자물쇠를 입도 분할의 충분한 크기로 분리함)
  • 언제 HashMap을 사용합니까?그는 어떤 특징이 있습니까?맵 인터페이스를 기반으로 키 값이 맞을 때null의 키 값을 받을 수 있습니다. 비동기적입니다. HashMap은 Entry (hash, 키,value,next) 대상을 저장합니다.
  • HashMap의 작동 원리를 아십니까?hash 방법을 통해put와 get을 통해 대상을 저장하고 가져옵니다.대상을 저장할 때, 우리가 K/V를put 방법에 전달할 때,hashCode를 호출하여hash를 계산하여 bucket 위치를 얻고, 더 나아가 저장하면,HashMap은 현재 bucket의 점용 상황에 따라 자동으로 용량을 조정한다. (Load Facotr를 초과하면 Resize가 원래의 2배가 된다.)대상을 가져올 때 get에 K를 전송합니다. K는hashCode를 호출하여hash를 계산하고bucket 위치를 얻으며, equals () 방법을 호출해서 키 값을 정합니다.충돌이 발생하면 Hashmap은 체인 테이블을 통해 충돌 충돌이 발생하는 요소를 구성하고 자바 8에서 충돌 충돌이 발생하는 요소가 제한을 초과하면 빨간색과 검은색 트리로 체인 테이블을 대체하여 속도를 높인다.
  • get과put의 원리를 아십니까?equals()와hashCode()는 어떤 역할을 합니까?키의hashCode()를hashing하고 아래 표시(n-1 &hash)를 계산하여buckets의 위치를 얻습니다.충돌이 발생하면 키를 사용합니다.equals () 방법은 체인 테이블이나 나무에서 대응하는 노드를 찾아낸다
  • hash의 실현을 아십니까?왜 이렇게 이루어져야 합니까?자바 1.8의 실현은 hashCode()의 높은 16위 이상 또는 낮은 16위를 통해 이루어진 것이다. (h=k.hashCode()^(h>>>> 16) 주로 속도, 효능, 품질을 고려한 것이다. 이렇게 하면 bucket의 n이 비교적 작을 때 높낮이bit를 고려하여hash 계산에 참여하는 동시에 큰 비용이 들지 않을 수 있다.
  • HashMap의 크기가 로드 팩터(load factor)가 정의한 용량을 초과하면 어떻게 합니까?부하 인자 (기본 0.75) 를 초과하면, 원래 길이의 두 배의HashMap을 리서치하고,hash 방법을 다시 호출합니다.

  • 추상 클래스와 인터페이스의 차이, 클래스는 여러 개의 클래스를 계승할 수 있습니까? 인터페이스는 여러 개의 인터페이스를 계승할 수 있습니까? 클래스는 여러 개의 인터페이스를 실현할 수 있습니까? 추상 클래스 방법은 실현할 수 있습니다. 인터페이스 중의 방법은 성명만 할 수 있고 인터페이스는 여러 개의 인터페이스를 계승할 수 있으며 클래스는 여러 개의 인터페이스를 실현할 수 있습니다.어떤 상황에서 창고 메모리 넘침 스레드 창고에 귀속 호출이 존재하고 사순환 또는 대량의 순환이 존재하며 전역 변수, 호출된 클래스 그룹,list,map이 너무 크다.nio가 무엇인지, 원리 new io,buffer,channel,selector

    좋은 웹페이지 즐겨찾기