올해 구직 여정은 거의 끝나가고 있습니다. 사실 한두 달 동안 면접이 없었고, 생각해보거나 다음 회사들을 기록해 두었으며, 기억나는 것만 기억합니다. 제 직책은 Java R&D 엔지니어라서 이 분야의 모든 지식 포인트를 포함합니다.
인턴십
1. 모건 스탠리
첫 인터뷰는 모건... 면접관은 매우 친절하며, 주요 질문은 다음과 같습니다: (1) 프로젝트를 소개하고 자신이 한 부분에 대해 이야기하세요 (소개 후에 제가 한 일이 너무 낮다는 걸 깨달았고, 아직 준비해야 합니다) (2) 다형성. C++에서 가상 함수, 파생 클래스에서 가상 함수를 다시 작성할 때, 런타임에 내가 어떤 서브클래스에서 실행하는지 어떻게 알 수 있을까요? (3) 자바에서 일반적으로 사용되는 컬렉션은 무엇인가요? A: ArrayList와 LinkedList를 포함한 리스트입니다. ArrayList는 내부적으로 배열에 의해 구현되며, 배열은 길이를 변경할 수 있습니다. LinkedList는 연결 리스트 구현체이며 길이를 변경할 수 없습니다. Q: 일반적으로 LinkedList의 길이, 예를 들어 10을 정의하고 그 이상으로 설정한다는 뜻인가요? A: 아니요, LinkedList의 길이를 지정할 필요는 없습니다. 정의가 없다면, 최대 공간 개방 공간을 결정하는 것은 기계가 결정해야 합니다. 필요한 만큼 데이터를 추가합니다. Q: 추가 작업이 너무 많으면 어떤 문제에 직면할까요? 무제한 공간을 추가하는 것은 불가능합니다 A: 네... 그래서 일정 범위가 있는데, 최대 LinkedList가 가질 수 있는 공간은 기계에 따라 결정되어야 한다고 생각합니다. 32비트와 64비트 기계는 다를 거예요 (Meng, 사실 잘 모르겠습니다). Q: 그럼 정기적으로 사용하는 다른 컬렉션도 있나요? 답변: Set, 주로 HashSet, TreeSet, LinkedHashSet을 사용하고, 이 세 가지의 차이점을 설명해 주세요 Q: HashSet과 TreeSet, 삽입, 조회 등의 복잡성을 분석하세요. 답변: HashSet은 해시와 연관되어야 합니다. 만약 일반 해시 코드라면 많은 충돌이 발생할 수 있습니다. 그래서 연결 리스트가 더 길어지고 탐색 시 연결 리스트를 탐색하는 속도가 느려집니다. 하지만 충돌을 해결하기 위해 2차 탐지 같은 최적화 방법을 사용해 충돌을 줄이면 더 빠릅니다. TreeSet 내에서 사용하는 빨간색과 검은색 트리, 검색 및 삽입 순서는 O(log(N))... 그럼 또 다른 질문이야... 더 이상 묻지 않았어요.
|