字节跳动面经
在牛客潜水已经快两年了,第一次发贴。
感谢牛客网这个平台,不仅在此得到了内推机会,还在此做了不少算法题,最重要的是字节跳动和其他公司的面试都在牛客网完成的。感谢!!
一 3月23第一次面试,(60min)
一面感觉还不错,面试官很和蔼,有的问题答不出或卡壳了也会有提示或说没关系。
以下是面试题目,时间有点长了可能记不太清。
1 HashMap(感觉这东西必问啊),说了大概十分钟,包括底层实现的各种细节,并发条件下的问题(我真的一滴都不剩了)。
2 关于常量池的问题,大概意思就是下面s1 跟 s2 "==" 和 equals 的结果是什么,分别存在哪里。
还问我Integer的常量池会存储哪个范围的(-128 - 127)。
String s1 = "abc"; String s2 = new String("abc"); Integer a = 12; Integer b = new Integer(12);
3 根据上面的问题引申到Java虚拟机内存模型,垃圾回收算法等等(还好我前一天刚好看了垃圾回收机制)。
4 了解哪些设计模式,我说了单例模式、动态代理、模板方法、工厂模式。让我说说动态代理是什么意思。我答的不太好,就说了跟Spring中AOP有些像,对方法进行增强。然后让我手写一个例子。
我当时有些紧张,动态代理其实没那么熟悉,JDK中的动态代理API也不没记熟。于是我就写了个静态代理的例子。还没写好,但是意思出来了。面试官就说下一个吧。
5 多线程相关的问题,wait和sleep的区别,Synchronize和Lock的区别,有哪些线程安全的集合类,如何终止一个线程,join方法是什么含义。
6 单例模式(饿汉,懒汉,DCL)
7 volatile关键字,禁止指令重排,为什么不保证原子性,举个例子。
8 算法题:反正是一个重建二叉树的题,剑指Offer的原题,好像是一个数组是排序二叉树的后序遍历,请把它重建出来。
我当时还挺慌的,只感觉这个题有印象,但忘记是原题,想了一会儿用递归写出来了。中间有些小问题,得到了面试官的指正。
9 项目相关,自己做了哪些东西,聊了10分钟(这段其实在自我介绍之后)
一面结束,让我等一会马上二面。
二 3.28第二次面试(90min)
二面面试官有事在开会,HR通知我另外一个时间,于是就这天了(因为我期间也有些事情)。
二面面试官也是个挺能聊的人,这一面我很难受,因为面试官没有问常规的题目,而是对我这个人计算机素养的考察,对我是否有热情的考察。这些问题我都尽量跟着面试官的节奏走,答得稀烂。
1 比如问了很多操作系统的知识(图灵机、冯诺依曼体系,知不知道其他体系,磁盘存储,文件怎么存储的)Linux和Windows的文件有什么区别(这个忘记他是怎么问的了,反正很偏的一个知识点)
2 编码问题,我说了下ANSI Unicode-8 ASCII。问我 Unicode-8 一个字符多少位,为什么这么设计,Unicode-8和Unicode-16 有什么区别?ASCII中数字1是第几位,它可以表示所有的语言文字吗?如果不能又是怎么处理的?网页那一串链接是怎么对字符串进行编码转换的等等类似问题。
11 我聊了下我以前写的一些小项目的经历,体现了我对计算机的研究热情(20分钟,此处省略1000字)
结束了,让我等通知,当时已经下午5点半了。我以为今天没有了,就退出了。5点50一个电话打来,原来是三轮面试官,我赶紧打开电脑。但是已经六点了,于是约了晚上8点。
三 3.28 第三次面试(70min)
三面面试官看起来非常年轻,后来知道是主管。。也很好说话。
不好意思各位同学,三面我真的记得不多了,不知道是当天晚上太冷冻得瑟瑟发抖的缘故(突然外面下雪)还是太紧张。我只记得几个问题了。
1 项目相关,session cookie,项目中是怎么处理的。负载均衡相关,有个问题我没答上来:如何保证手机端登录的用户和网页端登录的是一个?(15分钟)
2 redis数据结构,用过哪些命令。(这里我引出了跳表这种结构,因为刚看的嘿嘿)
3 实现LRU(Leetcode高频面试题,但我头硬没做那道题,幸好面试官只是让我说说,队列加哈希表实现)
四 4.8 Offer Call
其实,三轮面试过后,我觉得我不行。因为两个手写的题目都出现比较严重的失误。
失落的我看了三天b站。。一点没有准备面试的事情。
三天后恢复了斗志,做了其他几家的笔试题,也面了几家。
4.8号下午字节的hr打电话跟我说通过了!跟我说了下评级,薪酬等问题。
接完电话我把自己捂在被子里面笑了1分钟。
五 Offer比较

薪水字节跳动给的多20%,毕竟校招生有签字费,不过也就第一年有。
都在北京。