字节跳动安全开发实习生一面:
面试采用线上视频方式,下载zoom的谷歌插件,点击网页链接进去即可。
在面试前要准备好面试环境,保证麦克风和视频清晰,光线良好。
面试总结:
比自己面试之前的预期感觉要好,问题基本是一半对一半不会的水平,总体感觉下来就是自己的基础功不扎实,需要在牢靠一些,不能总是当时看当时会,面试时就忘,面试官判断你会不会就是看你面试时的表现的。
面试官基本会从小问题入手,一步一步引导,字节跳动的面试官小哥哥人比较好,不会的地方会耐心的引导你深入问题。自己的水平还是很差,仍需努力。
一定要注重简历上的内容,面试官会从简历上挑选内容细问,不会的不要写上去。
面试问题:
1. 首先自我介绍,要练的熟练些,不要磕磕绊绊,有点紧张。
2. 从经历里面挑选一个你自己认为分量很重的项目详细说一下:
讲述了自己在腾讯的实习经历,面试官问了一下某个具体的细节,流畅的回答,OK√
3. 输入网址后,点击回车键,详细说一下打开网址的整个实现流程:
考察计算机网络的能力,刚开始有点懵,不知道怎么回答,只说了http和tcp/udp,在面试官的引导下详细说了计算机网络每一层的具体逻辑和任务。
网上有相关的详细的解答:
从电流闭合讲起的详细流程 --> 对应的github链接
具体流程: 按下按键后
- 键盘闭合,产生电流,操作系统产生中断,发往应用程序
- 浏览器解析URL:通过解析了解协议和请求的内容
- 判断输入是否合法: 判断输入的是url还是域名还是关键字,判断输入是否合法
- DNS查询:DNS查询本地cache或者向DNS服务器发送查询请求,请求目标主机的ip地址
- ARP过程:查询MAC地址
- 套接字:使用套接字建立连接,即tcp/udp连接,tcp三次握手
- http协议:发送http包,进行http请求,http回答
- 浏览器解析,渲染:得到请求的资源后。浏览器进行解析和渲染
- 连接拆除,tcp/udp连接清楚,tcp四次握手
4. 详细讲一下ARP的工作原理,目标主机在同一个局域网和不在同一个局域网的差别
这里的基础知识已经不记得了,要补一下,主要考察的是ARP发送的是ICMP查询包,以及具体的过程。
5. HTTPS协议的详细流程是什么:
不会,要补一下http和https的知识。
https是http+ssl
6. SSL的创建过程是什么:
还是不会。。。
7. 堆栈的问题:堆和栈是什么数据结构,汇编语言中如何分配和使用堆栈的内存的,堆和栈的增长方向分别是什么?
一直没理解堆和栈的区别,只会栈。
网上的文章:
堆和栈的区别
大致总结:
栈:编译时就由编译器定下的固定的连续的内存区域,大约2M容量,存储程序中的变量、返回地址等内容,由程序分配和释放,每个栈内存是四个字节大小。是向低地址扩展的数据结构。
堆:由程序员手动进行分配和释放的不连续的操作系统的空闲内存区域。由一个链表管理,大部分通过程序员使用malloc函数进行分配,通过链表查找空闲内存进行分配。是向高地址扩展的数据结构。容易产生内存碎片。
8. 堆栈缓冲区溢出原理以及区别:
大致讲了strcmp()函数的缓冲区溢出原理,堆栈的缓冲区溢出区别不是很了解。
网上博文:
缓冲区溢出原理
9. 逆向调试方面的内容:如何进行调试,思路是什么:
先使用动态调试器,找到要分析和调试的内容,然后使用静态分析工具对程序进行静态分析。
面试官提到了使用hook,但是刚接触,没有使用过网上的工具,但是提到了自己写的hook小工具。
10. python知识,知道装饰器么?
讲述装饰器的使用
11. Python,闭包的使用注意事项是什么,闭包是值引用还是命名引用
不会
12. 对树的每一层进行搜索应该用什么搜索方法,使用python的哪一中数据结构实现二叉树,如何实现?
考的是广度优先搜索和深度优先搜索,对每一层搜索应该是广度优先搜索。
用Python实现数据结构,实在是不会呀,编程还是太弱了,要加强练习,要用Python把每一个数据结构都练一遍!!!面试官提供了两个选项,用栈还是用队列,应该是队列叭。。思路就没有了。。下来要写一下。
13. linux内容:如何查看当前网络连接状态,进程状态,管道使用
linux还是只熟悉基础的命令,管道、网络、进程等还没有学习到,要继续学习。
stas
,ps
要看的内容:
- 计算机网络基础,要巩固!!!!
- http协议,https协议,原理
- 使用编程语言实现常见的数据结构(c\python)
- 缓冲区溢出等基础原理
网友评论