>백엔드 개발 >Golang >새롭게 공개된 바둑 면접 질문 (바이두, 미호요)

새롭게 공개된 바둑 면접 질문 (바이두, 미호요)

藏色散人
藏色散人앞으로
2021-09-25 16:38:569532검색

두 회사 모두 온라인 인터뷰를 사용했습니다. 당시에는 녹음이 없었습니다. 이제는 전적으로 내 기억에 의존하여 검토합니다. go技术岗位,一家百度,一家米哈游,面试的情况也不太乐观,现在分享一下面试中问的问题吧。

两家都是采用线上面试的,当时没有录音,现在全靠自己的回忆来复盘一下了。

百度一面

百度的面试步骤分为计算机基础、go相关、mysql相关、redis相关、linux相关问题。还有一些发散性的问题。

基础相关

  • 算法,包括不限于红黑树、二叉树等等。
  • 数据结构,包括不限于链表、数组等。
  • tcpip相关的一些问题,比如三次握手、四次挥手、time_wait等等。
  • 浏览器输入地址,中间发生的过程,仔细的描述一下。(这个我感觉基本都会被问,哈哈哈)。

这一块的话,我回答的是稀碎,算法和数据结构我一个都没答上来,后面两个因为之前面试问到过,所以查过一些,回答的还算可以。

go相关

  • GC,(面GO必问题),GCstw时机,各个阶段是如何解决的。
  • gpm,(面GO必问题),这个必须要完全理解,抢占式调度是如何抢占的,怎么调度goroutine的,MP的数量问题。
  • 如何优雅的实现一个goroutine池(这个回答的稀碎)
  • 谈谈内存逃逸
  • 内存管理(这个也回答的稀碎)

mysql相关

  • mysql锁,分锁粒度和锁算法(间隙锁、记录锁,临键锁),以及锁算法在什么情况下会用到。大概意思就是如果精准能匹配到的话,用的就是记录锁,否则退化为间隙锁
  • mysql mvvc实现原理。
  • mysql 索引,索引建立时机,建立规则。
  • mysql 分库分表规则,有没有实践过?
  • mysql 索引的类型以及索引的数据结构
  • mysql 事务特性,以及隔离级别。

redis

  • redis的数据类型有哪些,使用场景说说。
  • redis zset的编码方式,应该有两种,在配置文件中配置的,默认128个元素是ziplist(压缩表),大于128则是skiplist
  • redis的内存淘汰策略
  • redis的持久化策略
  • redis分布式锁
  • redis分布式架构有哪些
  • 如果有一个排行榜,用zset,根据积分和时间来排序,积分高的,时间最近的拍前面,怎么实现?

linux

  • 你熟悉的有哪些命令
  • 如果线上流量暴增,全都打到一个upstream上了,怎么排查。
  • 如何在nginx的access log中查出请求前10的ip

总结

我面试结束后,一般都会问面试官,根据这次面试,针对我的技术上面,有什么好的建议或者意见,这位面试官给我的回答是:计算机基础比较薄弱,但是业务能力很强。这也是我目前的现状,哈哈,所以最近一直在看哈工大老师的计算机理论和操作系统。希望能勤能补拙吧。

米哈游一面

米哈游面试总体分为四个部分,go相关,mysql相关,redis相关,linux

바이두 한쪽

바이두의 면접 단계는 컴퓨터 기초, go 관련, mysql 관련, redis)로 나누어져 있습니다. > 관련, linux 관련 문제. 또한 몇 가지 다양한 문제가 있습니다.
  • 레드-블랙 트리, 이진 트리 등을 포함하되 이에 국한되지 않는 기본 관련

알고리즘

🎜연결된 목록, 배열 등을 포함하되 이에 국한되지 않는 데이터 구조 🎜🎜3방향 핸드셰이크, 4방향 웨이브, time_wait 등과 같은 tcpip와 관련된 일부 문제 🎜🎜 브라우저에 주소를 입력하고 과정을 자세히 설명해주세요. (기본적으로 이런 질문을 받을 것 같아요, 하하하). 🎜🎜🎜이 부분은 제가 답변한 내용이 산재해 있었는데, 알고리즘이나 데이터 구조에 대해서는 이전에 인터뷰에서 질문한 적이 있어서 몇 가지만 확인하고 꽤 잘 대답했어요. 🎜🎜🎜🎜go 관련🎜🎜🎜GC, (GO에 대한 필수 질문), GCstw 타이밍 > 각 단계의 해결 방법. 🎜🎜gpm(GO에 대한 필수 질문), 선점형 스케줄링이 어떻게 선점하는지, goroutine을 스케줄링하는 방법을 완전히 이해해야 합니다. MP의 수량 문제. 🎜🎜goroutine 풀을 우아하게 구현하는 방법(이 답변은 희소함)🎜🎜메모리 탈출에 대해 이야기하기🎜🎜메모리 관리(이 답변도 희박함)🎜🎜🎜🎜🎜mysql 관련🎜🎜 🎜MySQL 잠금, 잠금 세분성 및 잠금 알고리즘(갭 잠금, 레코드 잠금, 키 잠금) 및 잠금 알고리즘이 사용되는 상황. 일반적인 의미는 정확하게 일치할 수 있으면 레코드 잠금이 사용되고, 그렇지 않으면 갭 잠금🎜🎜mysql mvvc 구현 원칙으로 변질된다는 것입니다. 🎜🎜mysql 인덱스, 인덱스 생성 시기, 생성 규칙. 🎜🎜MySQL 하위 데이터베이스 및 테이블 규칙을 연습해 본 적이 있나요? 🎜🎜mysql 인덱스 유형 및 인덱스 데이터 구조 🎜🎜mysql 트랜잭션 특성 및 격리 수준. 🎜🎜🎜🎜🎜redis🎜🎜🎜redis의 데이터 유형은 무엇인가요? 사용 시나리오에 대해 이야기해 보겠습니다. 🎜🎜redis zset에는 두 가지 인코딩 방법이 있어야 합니다. 구성 파일에 구성되어 있으며 기본 128 요소는 ziplist(압축 테이블)이고 128보다 큰 경우 🎜🎜redis의 메모리 제거 전략 🎜🎜redis의 것입니다. 지속성 전략 🎜🎜redis 분산 잠금🎜🎜redis 분산 아키텍처는 무엇인가요?🎜🎜순위 목록이 있는 경우 zset을 사용하여 점수가 높은 사람과 시간이 가장 늦은 사람이 먼저 순위를 매깁니다. . 어떻게 구현하나요? 🎜🎜🎜🎜🎜linux🎜🎜🎜어떤 명령에 익숙하시나요? 🎜🎜온라인 트래픽이 급격히 증가하고 모두 업스트림으로 이동하는 경우 어떻게 문제를 해결할 수 있나요? 🎜🎜nginx 액세스 로그에서 요청된 상위 10개 IP를 찾는 방법🎜🎜🎜🎜🎜요약🎜🎜저는 보통 인터뷰가 끝난 후 면접관에게 이 인터뷰를 바탕으로 내 기술에 대한 제안이나 의견, 면접관의 좋은 점이 무엇인지 묻습니다. 나에게 대답은 '컴퓨터 기반은 상대적으로 약하지만 비즈니스 능력은 매우 강하다'였습니다. 이게 제 현재 상황이기도 해요 ㅎㅎㅎ 최근 하얼빈공과대학 선생님들께서 강의하시는 컴퓨터 이론과 운영체제를 읽고 있어요. 열심히 노력해서 나의 단점을 보완할 수 있기를 바랍니다. 🎜

🎜🎜MiHoYo의 측면

🎜MiHoYo 인터뷰는 일반적으로 네 부분으로 나누어집니다. go 관련, mysql 관련, redis code>관련, linux관련. 🎜🎜🎜🎜관련문의하기🎜🎜🎜첫번째 질문에 당황했습니다. 코드는 다음과 같습니다. 🎜🎜
...m := make(map[int]int, 10)for i := 1; i<= 10; i++ {
    m[i] = i}for k, v := range(m) {
    go func() {
        fmt.Println("k ->", k, "v ->", v)
    }()}...
🎜무슨 일이 일어날지, 왜, 어떻게 해결해야 할지 물어보세요. 외부 변수를 사용하기 위해 클로저를 직접 사용하지 마세요. 매개변수를 전달하여 해결할 수 있습니다. 🎜
  • 메모리 누수, 어떤 상황에서 메모리 누수가 발생하나요?
  • 채널의 기본 구현 원리(실제로는 buf가 순환 연결 목록의 데이터 구조임을 묻는 의미)
  • defer, 반환 값을 언제 수정하는지 신중하게 답변해야 합니다. 여러 연기의 순서입니다.
  • make와 new의 차이점
  • 채널을 닫은 후 데이터를 전송하면 어떻게 되나요?
  • 지도는 스레드로부터 안전합니까? 지도 확장 규칙입니다.
  • 배열과 슬라이스의 차이점.
  • GC
  • GPM 모델
  • 프로세스, 스레드, 코루틴의 차이점. (이것은 매우 중요합니다)

잊은 다른 것도 있습니다.

redis

은 거의 Baidu와 같습니다.

mysql

은 Baidu와 거의 동일합니다.

linux

거의 똑같아서 프로세스 이름을 기준으로 프로세스 ID를 확인하는 방법을 물었습니다.

요약

인터뷰 피드백에 따르면 미호요는 Go 기반을 제대로 제공하지 못했습니다. 사업능력이 강하다. 어쩌면 이것이 예전 아웃소싱의 특징이 아닐까 싶습니다.

미호요 2편

미호요 2편은 주로 비즈니스와 알고리즘에 대한 질문을 던지며, 크게 세 부분으로 구성됩니다.

  • 마이크로서비스 등록 및 검색, 마이크로서비스 모니터링, 마이크로서비스 현재 제한 등 마이크로서비스 관련, 마이크로서비스 데몬화 방법에 대해 답변했는데 맞는지 모르겠습니다.
  • 특정 비즈니스의 실현, 상환 코드의 실현, 수십만 또는 수백만 개의 상환 코드를 일괄 생성하는 방법(나는 눈송이 알고리즘을 사용하여 이 질문에 답했습니다), 높은 동시성에서 상환 코드를 보장하는 방법 한 사람만 사용할 수 있으며 한 사람이 한 번만 사용할 수 있으며 여러 사람이 상환 코드를 사용할 수 있는 방법을 알아보세요. (이 질문에 대답하는 데 30분 정도 걸렸습니다. 이전에 관련 사업을 해본 적이 있어서 조금 자신감이 생겼습니다.)
  • 알고리즘 질문 ​​3개.
    1. 풀이 방법 작성: 4개의 숫자를 입력하고 덧셈, 뺄셈, 곱셈, 나눗셈을 통해 기대값을 출력합니다.
    2. 폭 우선 알고리즘: 각 레이어의 값을 출력하는 방법.
    3. 단계 문제, 한 단계 오르고 싶다면 한 단계씩 올라갈 수도 있고 두 단계씩 올라갈 수도 있습니다. 단계 수를 입력하고 몇 단계까지 올라갈 수 있는지 출력하는 메소드를 작성하세요.

추천: "golang 튜토리얼"

위 내용은 새롭게 공개된 바둑 면접 질문 (바이두, 미호요)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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