>  기사  >  이 소녀가 어떻게 메이투안으로부터 제안을 받았는지 보세요.

이 소녀가 어떻게 메이투안으로부터 제안을 받았는지 보세요.

Java学习指南
Java学习指南앞으로
2023-07-26 16:55:08939검색

메이투안씨, 예전에 이력서를 Lagou.com에 제출했는데, 이력서 삭제가 통과되지 않아서 나중에 선배한테 이력서 수정을 도와달라고 해서 다른 부서에 다시 제출했어요. , 그리고 인터뷰를 하게 되었습니다. HR에서는 10월 23일 정오에 전화를 걸어 오후 4시 30분에 면접 약속을 잡았고, 온라인으로 코드를 작성하겠다고 하며 네트워크 환경을 준비하라고 했습니다. 결과적으로 5시 30분에도 전화가 안와서 놔줬습니다. HR과 다시 통화한 후 다음 주 월요일 오후에 다시 만나기로 했습니다. 그러나 약속을 잡기 위해 HR과 소통하는 것은 Meituan에서는 소용이 없는 것 같습니다.

면접 1회(20분)

저녁 7시, 다음주 월요일 면접 생각으로 배드민턴 치러 막 나가려는데 베이징에서 전화가 왔다. 면접관은 회의가 늦어졌다며 여러 가지 사과를 했다.

1. 자기소개

몇번이나 말씀드렸는데 핵심을 아주 매끄럽게 뽑아내시네요.

2. 데이터 구조 알고리즘이 좋은지 물어보세요

꽤 괜찮네요(사실 아직은 조금 죄책감이 들지만 최근에 질문을 많이 해서 뚱뚱한 척 할 수 있을 정도로 용감하네요. ).

3. 단일 연결 목록의 세 번째 이등분 지점을 찾으세요. 단일 연결 목록에 링이 있으면 어떻게 되나요?

한 단계씩, 다른 세 단계마다 느린 포인터와 빠른 포인터를 사용하세요. 루프가 있는 경우 먼저 루프가 어디에 있는지 확인하고 마지막 노드를 찾은 다음 이전 루프 없는 방법을 사용합니다.

4. 프로젝트 구조에 대해 이야기해보겠습니다.

저는 MVC에 중점을 두었습니다.

5. 익숙한 디자인 패턴에 대해 알려주세요.

저는 싱글톤, 팩토리 메소드, 에이전트에 중점을 두었습니다.

6. 서버 같은 건 구성하셨나요?

이건 정말 모르고 들어본 적도 없어서 솔직히 아니라고 할 수밖에 없군요.

면접관님이 방금 회의를 마치고 아직 식사도 안 하신 것 같더라고요. 그는 나에게 기다리라고 하고 아마도 나를 인터뷰할 동료를 찾으면 결과를 직접 말해 줄 것이라고 말했습니다. 면접관의 목소리와 말투로 보아 그 사람이 해당 부서의 사장임에 틀림없다고 판단하고 디자인에 관해 더 많은 질문을 했습니다. 나중에 HR에서는 그가 제가 가고 싶은 부서의 사장이라고 말했습니다. ㅋ.

면접 2회(60분)

1차 면접을 마치고 배드민턴 치러 나가려고 하는데 또 베이징에서 전화가 왔어요. (금요일에는 팀 활동을 못 할 운명이네요!)

2차 면접: 1차 면접에 비해 2차 면접의 면접관 목소리는 역시 기술개발에 종사하는 듯한 목소리였습니다. 1시간 동안의 순수 기술 전화 인터뷰! 매우 포괄적입니다!

1. Spring: Spring, Spring IOC, AOP 메커니즘 및 구현, Spring MVC를 사용해 본 적이 있습니까?


사실 Spring의 세부 사항에 대해 묻고 싶지 않습니다. 프레임 워크를 검토하지 않았습니다. 그리고 나는 그것을 잘 기억하지 못한다. 그래서 나는 면접관에게 Spring의 더 중요한 메커니즘 중 일부를 꽤 잘 이해했다고 말했고, 그런 다음 실제 예를 사용하여 IOC와 AOP에 대한 나의 이해를 설명했습니다. 그는 잘 듣고 있다고 말했습니다(드물게 만남). 면접때 피드백을 주실 수 있는 면접관님이 계셔서 너무 행복합니다.)


실제로 저는 인터뷰어에게 제 프로젝트에 사용된 Servlet과 jsp, javabean으로 구현한 MVC, 그리고 각 MVC 모듈의 역할과 각 모듈이 어떻게 연결되어 있는지에 대해 설명했습니다. , 그리고 마지막으로 SpringMVC의 아이디어가 실제로 이것과 같다고 생각한다고 덧붙였습니다.


2. 스레드 안전성을 달성하는 방법, 다양한 구현 방법의 차이점, 휘발성 키워드 사용, 재진입 잠금에 대한 이해, 재진입 잠금 동기화


여기에서는 주로 동기화된 키워드와 동시 패키지의 일부 잠금, 각각의 장점, 단점 및 차이점에 대해 설명하겠습니다. 저는 주로 가시성, 원자성, JVM 명령 재정렬 금지의 세 가지 측면에서 휘발성 키워드에 대해 이야기했습니다. 또한 JVM 명령 재정렬 최적화를 금지하기 위해 멀티 스레드 싱글톤 모드 이중 확인에서 사용한 휘발성 키워드에 대해서도 이야기했습니다.


3. 컬렉션: HashMap의 기본 구현, HashMap 스레드 안전성 구현 방법


저는 HashMap의 기본 구현과 단일 연결 목록, 노드 내부 클래스, 추가 프로세스에 대해 이야기했습니다. , 해시 충돌 해결 및 확장 , 세 가지 컬렉션 보기. HashMap 스레드 안전성의 구현 방법은 주로 HashMap을 캡슐화할 수 있는 HashTable, ConcurrentHashMap 및 Collections의 정적 메서드인SynchronizedMap에 대해 설명합니다. 그리고 이 세 가지 방법의 차이점과 효율성 성능.


4. HotSpot에서의 JVM 메모리 관리, GC 알고리즘, 가비지 컬렉터 및 클래스 로딩


JVM 메모리는 크게 5가지 영역으로 나누어지며, 스레드별로 공유되고, 스레드에서만 저장됩니다. 각 지역에서. GC: GC, GC 메서드, Minor GC 및 Full GC가 필요한 객체를 결정하는 방법. HotSpot GC 알고리즘과 7가지 유형의 가비지 수집 기간, 주로 CMS 및 G1 수집기에 대해 설명합니다. 클래스 로딩: 클래스 로딩 프로세스, Bootstrap classloader-ExtClassloader-AppClassloader, 상위 클래스 위임 메커니즘.


5. 프로세스와 스레드의 차이점


스케줄링, 동시성, 소유 리소스 및 시스템 오버헤드의 네 가지 측면에서 답변했습니다.


6. HTTP 무상태를 해결하는 방법은 실제로 세션 추적을 수행하는 방법입니다. .도메인, 쿠키, 세션.


7. Java IO, NIO는 Java에서 구현된 비동기 IO인가요?


Java IO는 동기 차단을 구현합니다. 동기 차단은 어떻게 구현되나요? 나는 read() 메소드를 예로 들었다. NIO는 동기식 비차단을 구현합니다. 다중화 IO를 구현하는 방법을 설명하기 위해 Selector의 select() 메서드 폴링에 대해 자세히 설명했습니다. 그런 다음 효율성을 비교하십시오. 면접관님은 제가 이 분야에 대해 많이 알고 있는 걸 보시고 계속해서 비동기 IO가 Java로 구현되어 있는지 물어보셨는데 없을 것 같았는데 면접관님이 있다고 하셔서 생각해보게 되었어요. 사실 저는 이것에 대해 잘 몰랐기 때문에 면접관에게 유닉스의 비동기 IO 모델에 대해 제가 이해하고 있는 것을 말했고, 그런 다음 그것이 Java에 존재하는지 정말 모른다고 말했습니다. (그는 실제로 웃었다! 당신의 이해가 맞다고 말했습니다. Java가 있든 없든 상관 없습니다! ㅎㅎ)


8. Ajax 구현 원리를 아시나요?


프런트엔드만 알고 jquery 프레임워크를 사용했습니다. Ajax의 전체 이름이 무엇인지 물어보세요. 비동기식 js와 xml인 것 같습니다. 사실 Ajax 구현의 원리를 잘 모르겠습니다. XMLHttpRequest 객체를 통한 비동기 쿼리에 대해서만 간단히 설명했습니다. Ajax 엔진은 클라이언트에서 실행되므로 서버의 작업량이 줄어듭니다.


9 스레드 풀을 디자인하겠습니다


이력서에 멀티스레딩과 동시성을 잘 이해하고 있다고 적혀있으니까요. 그래서 그는 늘 이 부분에 대해 질문을 던진다. 이전에 ThreadPoolExecutor의 소스 코드를 본 적이 있기 때문에 해당 클래스의 디자인 아이디어를 바탕으로 이 문제에 대해 생각했습니다. 스레드를 생성하는 데 사용할 수 있는 팩토리 메소드 패턴인 코어 풀에 대해 자세히 이야기했습니다. 스레드 풀 상태, 차단 대기열, 이러한 측면의 거부 전략. 디자인이 상당히 철저합니다.


10 여러 디자인 패턴이 사용되는 위치와 사용 이유에 대해 이야기해 보겠습니다.


JDK의 단일 케이스 모드, ThreadPoolExcutor는 Observer 모드를 사용합니다. java.util 패키지 아래의 Observer. 마지막으로 팩토리 메소드 패턴의 사용 시나리오에 대해 주로 이야기했습니다.


11. Mysql 최적화 및 인덱스 구현


데이터베이스 설계 최적화와 쿼리 최적화라는 두 가지 측면에서 이야기합니다. 인덱스 B+ 트리 구현, InnoDB와 MyISAM 기본 키 인덱스 구현의 차이점은 하나는 집계되고 다른 하나는 집계되지 않습니다.


12. 트랜잭션 격리 수준


4가지 격리 수준, 발생할 수 있는 예외 수준, mysql의 기본 수준입니다.


13. Hibernate, mybatis, git을 사용해 본 적이 있나요?


간단히 말해 보세요.


14. Linux


이건 학부때 배웠다고 했는데 오랫동안 사용하지 않아서 명령어를 다 잊어버렸어요. 그는 괜찮다고 말했습니다. 그는 몇 가지 간단한 테스트인 cd, ls, dir(정말 간단함)로 여러분을 테스트할 것입니다.


15. 알고리즘 질문 ​​


100,000에서 가장 작은 10개의 숫자를 찾으세요. 시간 복잡도 분석(최대 힙, 메모리 고려).


양수 배열과 음수 배열, 시간 복잡도 분석(동적 프로그래밍)에서 연속 하위 배열의 최대 합 찾기

전체 이진 트리의 i번째 수준에 있는 노드 수와 노드 수는 몇 개입니까? n-레벨 완전 이진 트리가 있습니다.

드디어 질문할 시간입니다.


1. 어느 부서에 속해 있나요(핵심 부서, 빅데이터 연구 개발이라고 하더군요).


2. 저는 높은 동시성과 로드 밸런싱에 관심이 많은데, 학교에서는 그것을 경험할 수 있는 환경이 없습니다. 그럼 지금 배울 수 있는 것은 무엇입니까? (그는 이것이 사실이라고 말했습니다. 배우기가 쉽지 않다는 것. 일부 이론과 다른 사람들의 블로그만 읽을 수 있고, 나중에 직장에서 천천히 배울 수 있습니다.)


3. 미들웨어는 정확히 무슨 일을 하는 걸까요? 높은 동시성과 로드 밸런싱을 해결하기 위한 것인가요? (거의 그렇다고 하더군요. 그러다가 우리 부서는 미들웨어가 아니라 빅데이터 부서라고 하더군요. 저는 그렇다고 하더군요. ) .


결국 문제는 없었고, 전화를 계속 열어두라고 하더군요.

이 인터뷰를 마치고 입이 말랐습니다. 그가 인턴에 지원한다는 사실을 모를 수도 있다는 생각이 들었습니다. 요약하기엔 내용이 너무 많아서 요약자리에서 함께 이야기 나눠보겠습니다.


3면접(25분)

면접관님이 다른 부서 출신이라 교차면접을 해야 한다고 하더군요.


1.MySql 최적화.


2. 프로젝트가 무엇을 했는지, 아키텍처 등을 알려주세요.


3. Collabedit에서 온라인으로 코드 작성 질문은 매우 간단하며 The Beauty of 프로그래밍의 원래 질문입니다. 순서가 지정된 정수 배열의 합이 주어진 값이 되도록 두 개의 숫자를 출력합니다. 예전에 해본 적이 있어서 빨리 쓴 뒤 그에게 아이디어를 설명했어요. 그는 계속해서 배열이 정렬되지 않은 경우 어떻게 해야 하는지, 먼저 정렬하는지 물었습니다.


4. 두 개의 파일, 각 파일에는 여러 개의 URL이 있습니다. 두 파일에서 동일한 URL을 찾으십시오(HashMap 사용).

이쪽은 매우 간단합니다. 이전에 인터뷰하지 않은 온라인 항목을 추가하면 됩니다. 코드를 작성하다 보니 나중에 협업에 대해 알게 되었는데, 페이스북 같은 몇몇 인터넷 회사에서는 원격 인터뷰용 코드를 작성하는 데 이 온라인 편집기를 사용합니다. 화이트보드. 정기적으로 손을 연습하십시오.


HR 4차 면접(30분)

3차 면접 면접관님은 그게 마지막 면접이라고 하시고, 합격 후 HR 연락을 기다리겠다고 하셨습니다. 30분 뒤의 HR 인터뷰도 기술적인 면접이 될 것이라고는 전혀 예상하지 못했습니다.

1. 자기소개를 하세요. 다른 사람들에게 둘러싸여 있는데 왜 자기소개를 하시나요? ! 단순한 인사면접인 줄 알았는데, 소개서에 제 성격과 생활에 대한 내용이 다 적혀 있었는데, 알고 보니 그게 아니더라고요.

2. 프로젝트에 대해 물어보고, 기술적인 세부 사항, 어떤 문제가 발생했는지, 어떻게 해결했는지, 프로젝트를 주도할 사람이 있는지, 다른 사람들과 어떻게 소통하는지에 대해 매우 자세히 질문하세요.

3. 데이터베이스 최적화, 데이터베이스의 테이블이 너무 크면 어떻게 해야 하나요?

예전에 여러 번 이야기했던 데이터베이스 최적화에 대해 이야기했는데, 테이블이 너무 크면 어떻게 해야 하는지 물었습니다. 큰 테이블을 작은 테이블로 만드는 방법: 파티션 테이블을 사용하세요.

4. 대학원생에게 과학 연구 주제, 왜 이 주제를 선택했는지, 어떤 논문을 읽었는지 물어보세요(심지어 해당 논문이 어느 저널에 게재되었는지, 저자가 어느 학교 출신인지 물어보세요). 알고리즘이 어떻게 최적화되었는지, 실험 결과가 다른 사람들과 어떻게 비교되는지, 왜 다른 사람들의 알고리즘보다 나은지 (계속해서 질문을 하더군요. 제가 언급한 전문용어를 잘 이해하지 못한 것 같아요. . )

5. 인턴십 시간 결정하기

이 부분은 정말 학부생을 위한 프로젝트이고 시간이 오래 걸립니다. 요약이 안되어서 그냥 생각이 나네요 편집자님. 과학적 연구 측면에서는 나쁘지 않습니다. 저는 지난 학기에 일부 알고리즘의 구현, 개선 및 비교를 매우 명확하게 기억합니다. 아마도 이것이 실제로 기술적인 측면일 것입니다.

너무 피곤해요. 더 이상 인턴십을 찾고 싶지 않아요. 메이투안의 인턴 면접은 정규 학교 채용 제안만큼이나 거창해요. 이 부서는 정말 피곤해요. 저도 너무 좋고 너무 만족스러워서 계속 보고 싶지 않네요. 지금까지 Java 기초, 데이터베이스, 컴퓨터 네트워크 및 운영 체제에 대한 검토가 완료되었습니다. 이제 매일 질문을 복습하고 계속 진행하세요. 다음으로 Tomcat 소스 코드를 살펴볼 준비를 하세요. 이제 새로운 단계로 접어들게 됩니다. 이제 끝이 아닙니다.


위 내용은 이 소녀가 어떻게 메이투안으로부터 제안을 받았는지 보세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 Java学习指南에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제