字节跳动广告系统后端开发提前批面经(已意向书)
2020/7/14 11.12 意向书已发,感谢一周的等待,诸君共勉
~~~~~~~~~~~~~~~~~~~~~~~~~~~
2020/7/7 19:00 面试通过通知,offer已提交系统,3-5工作日审批, 等待字节后续沟通。今天电话交流的话主要交流了职业规划,和后续是否可以继续参加他们的远程实习,主要就是这些内容,今天。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2020/7/5 下午面试,连续三面,每面之间隔两分钟,面试官判断是否继续,我手撕代码分几面说吧,然后其他的内容的话,直接分块说一下自己所回忆的。
手撕代码:
一面:
括号匹配算法;
统计一个日志文件(里面存放的是id,每访问一次会有一行id)前10个出现的id;
OK,继续优化,如果这个日志文件很大,那我们内存放不下,放在外存你会怎么做(先分块,再把id相同的映射到同一个块,hash,或者取模可以做到,面试官提示的);
二面:最长不重复子串(双指针就可以了,这里我比较蠢,用了一个set,不过也可以解出来);
机器人走路算法(DFS+标记算法,可以写伪代码解释,我写了代码,但面试官说回溯有点标记问题),左上角走到右下角,求可能的路径中和最小的那个值;
三面:也不说什么了,既然操作系统页面置换算法有LRU,那么我们手撕一个LRU算法吧(Java内部LinkedHashMap实现了,但是如果用,就0分,面试官说的,手动模拟LRU,这个建议大家好好写一下吧,我实验室朋友前面面的另外一个部门也有手撕):需要一个put和get方法,具体的是需要HashMap和双链表去实现的,感兴趣的可以看看LeetCode有原题(在面试官的指导下完成,之前写的有些忘记了)。
面试内容:
数据库:
四种隔离级别;
三种问题(脏读,不可重复度,幻读的问题);
如果不用串行化,如何解决三种存在的问题(不用串行化,如何保持高的效率,也不会出现问题);
MySQL有哪些索引,介绍一下B+树具体的结构;
聚集索引和非聚集索引;
用过哪些数据库。
操作系统:内存,外存,虚拟内存,Cache的作用以及相关的原理(自述);
缺页中断有哪些算法;
同样的问题,外部有个大文件,内存放不下,我们应该如何处理(答了分块,多线程mmap,(可以用Hash映射,招银也会问)),mmap如何进行内存映射的;
说一下栈和堆吧,栈的效率会比较高,那么栈和堆有哪些用处和区别(首先答了多线程共享资源问题,从Java角度解释,多线程每个线程维护自己的栈,但堆是共享,会出现资源争夺的问题。其次从资源回收角度介绍了一下, 堆中的对象需要我们手动释放或者JVM回收,栈中的数据通常伴随着方***压栈或者弹出,从两个角度介绍)。
计算机网络:
打开一个URL经过哪些流程,顺带说一下协议;
HTTP的无状态是什么意思;
TCP和UDP的区别是什么,是什么导致了TCP效率比较慢;
拥塞避免具体的四个过程,每个过程如何实现的;
Java相关:
Spring框架中,说一下IOC和AOP吧;
线程池说一下实现原理;
说一下你了解的Java中的map的线程安全问题(HashMap, HashTable, ConcurrentHashMap,说一下底层原理);
什么时候会发生垃圾回收;
Volatile的原理;
NIO;
同步异步,阻塞和非阻塞,四个概念。
还有一些自己项目相关的问题以及其它的印象不是很深刻的就不说了。
大概就问了这些问题,总而言之,字节跳动的考察还是比较全面的,等通知,诸君共勉吧。
#字节跳动校招提前批##字节跳动##校招##golang工程师##面经#