【字节跳动】Go岗-秋招后端提前批

岗位:后端开发工程师

地点:杭州

一面

  1. go里面线程,进程,协程的区别
  2. 完全二叉树与搜索二叉树的概念
  3. Java中JVM 内存,垃圾回收机制。(面试官抠的比较细,要求讲到复制算法适用新生代,标记清楚算法适用年老代)
  4. MySQL的索引原理
  5. b树与b+树的区别
  6. InnoDB 和 MyISAM的区别 (聚簇索引和非聚簇索引)
  7. Redis的基本数据结构(string, hash, set, list zset)
  8. 讲一下跳表的原理(因为我前面提到了zset底层实现原理是skip list)
  9. TCP/UDP 网络模型一共有几层
  10. TCP和UDP的区别
  11. 从应用层到网络层各层的header都有什么不同的功能。(绝了,不知道咋讲。。说了存放地址和端口)
  12. 算法题
    • 通过给定的tree,判断是不是搜索二叉树和完全二叉树
    • tips:用中序遍历和广度优先法

二面

  1. 算法题
    • 给定一个随意的正整数数组,求最长的连续数字长度
    • eg. [3, 8, 9, 4, 6, 7] => 4 (6789)
    • 刚开始用了桶排序,后面在面试官的提示下用map优化了一下
  2. Redis删除key的机制 (还问了一个很神奇的,为什么要删除 从来没想过这个问题)
  3. Redis和MySQL存储数据的区别
  4. Java中String为什么要声明成不可变的
  5. 如果自己设计一个不可变的类,有哪些步骤
  6. 说一个设计模式 (说了观察者模式)
  7. 为什么需要回调 (大概讲了因为一直监控耗费性能,但好像不是面试官特别想要的答案:-<)
  8. 聊了一下之前在腾讯做过的项目

三面

  1. 算法题
    • 给定一个数组和一个数s,找到最短的子数组加起来的和超过s
    • 用两个指针去遍历 讲了一遍思路 面试官让我开始写 写了十分钟还有bug 面试官让我先跳过了(真是想吐槽一下牛客的IDE)
  2. 聊了一下暑假在字节做的项目
    • 总结了一篇新人文档
    • 一个权限管理的平台 (封装了一些后端的接口)
    • 一个对齐员工进度的表 (全栈)

主要还是在聊项目,没有考别的基础知识了

总结

总的来说,面试的时候还是有很多的不足,每次面试都是一次学习的过程。

发表评论

后才能评论