35

字节跳动后台实习一面凉经

 5 years ago
source link: https://studygolang.com/articles/19895?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

记录一下昨天的面试,感觉是凉了。

字节跳动嘛,早有耳闻面试很难,尤其是算法题部分,所以特地准备了很久算法,没想到最后没有跪在算法,跪在数据库……

背景

2019届中流985计算机本科,已经保研南京大学,同学帮忙内推暑期实习,时长3个月。目标岗位是后台开发,头条后台用Golang较多,本人没有接触过Golang,对Java比较熟悉。

面试

  1. 先自我介绍一下,最近在做什么。打算什么时候开始实习,能实习多久。
  2. 对什么语言比较熟悉?Java。 HashMap底层实现,如何扩容。HashMap为什么线程不安全,多个线程同时put时会发生什么?(这里答得不好,没有答到同时put导致链表成环的场景,反而是想到了用迭代器时其他线程对HashMap进行了修改引发的ConcurrentModificationException,也就是Fail-Fast,答非所问了)
  3. JavaGC 有了解吗,常用的GC算法。垃圾回收器有了解吗?讲一下你知道的。G1和CMS。CMS中如果大对象要进入老年代,老年代内存不足了,该怎么办。Full GC。 Full GC之后仍然空间不足呢? 我回答重新申请内存,但也不是特别肯定。面试官没有再追问了。实际上应该是抛出 java.lang.OutOfMemoryError
  4. 数据库有用过哪些,对什么比较熟悉。MySQL,Redis和MongoDB(后两个都只是用过) MySQL索引是什么数据结构,B+树。B+树和B树的区别,为什么用B+树而不是B树?这个一时没答得上来,今天好好梳理了一下: MySQL用B+树(而不是B树)做索引的原因
    然后考了我组合索引的知识: 假设有key (a,b,c) ,那么执行select * from table1 where a=? and b= ? 和 select * from table1 where b= ? and c= ? 哪一个会用到索引。这个当时真不会,就只好说不会了。MySQL索引这里掌握的确实不是很好。
  5. 假设客户端请求服务器端,一直得不到响应,如何排查。(吐槽一下,这个问题问的是真的烂,我一直以为是要找系统的问题,最后才知道只是想问我如何排查网络问题)
  6. HTTP有用过吗,HTT有哪些方法,请求头用过哪些,状态码知道多少。(这个我没有背,只说出来一些,其实查手册就可以,为什么要背呢,不理解为什么问这个问题)
  7. TCP 四次回收,TIME_WAIT做什么,CLOSE_WAIT做什么。
  8. Spring IOC、AOP 实现的原理 jdk动态代理和cglib的区别
  9. Redis用过吧,有哪些数据类型,Redis单线程如何保证不阻塞。(由于我只是会用Redis,所以基本没答上来)
  10. 业务题,假设头条每一篇文章,用户都有点赞和取消点赞的操作,还要查看每一篇文章的点赞数,如何实现?
  11. 算法题,一个链表,奇数节点升序,偶数节点降序,如何使链表升序?我给了个O(n)的算法:先把奇数节点和偶数节点分别拿出来,得到两个链表,再把偶数节点的链表反转,时间复杂度O(1),最后两个有序链表合并,O(n)
  12. 算法题,强盗要抢劫n个村庄,每个村庄能抢到一定的钱财,但不能抢劫相邻的村庄,问最多能抢到多少钱。 反应了两分钟,发现是DP,状态方程:
    f(n)=max(value[n]+f(n-2),f(n-1))
  13. 你还有什么想问的

总结

这次面试总的来说还是相当失败的,一方面问到了很多我的知识盲点,另一方面自己确实有些以为会了的地方还理解得不够深刻。头条面试,名不虚传。无论如何,再接再厉吧。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK