记一次失败的面经（2021.3.23 字节跳动 全栈实习生-轻服务 一面挂）
记一次失败的面经（2021.3.23 字节跳动 全栈实习生-轻服务 一面挂）背景大三，计算机科学与技术专业。本次面试是我在决定直接在国内就业后第一次找实习的面试。 简历投在了实习僧，本来投的是后端开发，但是邮件发来却显示是全栈，联系了HR说是可能业务部看了我的简历认为我更适合做全栈开发于是发了全栈的面试邀请。 在收到邮件之前对面试流程基本没什么了解，我是从收到邮件的那一刻才开始查资料准备的面试。查了很多别人的面经和一些技巧，发现我有非常多的东西还存在缺陷，因此在这记录一下，为以后的求职做准备。面试过程一、自我介绍一般面试上来都会让做自我介绍，我这里有点紧张，不是很自信，说了很多没用的东西，有点结巴，感觉不是很舒服。二、项目介绍简历上有一些我关于全栈开发的项目经历，于是让我先介绍了一下我的项目，问了项目的开发流程等，主要是问了关于项目中有没有遇到什么困难，怎么解决的。这块说实话我也不是很懂怎么表达，就随便讲了讲。三、前端部分前端这块首先问了我对于前端的了解，问我都会一些什么前端技术，我就是把我会的一些说了：HTML，JavaScript，CSS，JQuery，Vue之类的，然后提到了我的CSS学的很烂，基本都是用的开源库。然后问了我对那种语言比较熟悉，可能是希望我用js来做下面的题，但是我还是选择了Java，讲了一下我对语言和开发之间关系的理解然后是出了两道简单的数据结构的题目，一个是计算树的深度，一个是反转二叉树。这块确实将近两年前学的，已经忘得差不多了，就磨磨唧唧写了半天，还错了几个地方。之后是问了我对cookie的了解，简述一下cookie的原理，cookie的作用，cookie的域，session保存的实现在问完cookie之后，问了我如何在ajax请求中带上cookie做跨域请求，这块完全没接触过，蒙了几句四、后端部分后端这主要是问了我怎么处理高并发。我知道这个是后端的经典题，但是确实没什么准备，我自己的网站基本也遇不到高并发，所以就比较懵。我先说了使用CDN，然后问了我CDN的概念，作用以及实现方法，个人感觉回答没什么问题但是不够全面也不够准确，好几次都不小心说成了BGP边界网关协议然后是使用队列，这个我完全就是只知道有队列但是完全不知道怎么用，所以基本问的都不懂。最坑的是我说了个负载均衡，还是一样，只知道怎么用不知道原理，讲了半天也没讲出来啥有用的，基本就凉凉我估计面试官看我什么也说不出来，就基本不在问后端的东西了五、数据库数据库这块也是问了我一个我从来没用过的东西，索引。就只是单纯知道索引这回事，但是以前从来没实际使用过，所以就导致完全不知道怎么回答，先是问了我索引是什么，然后是怎么实现的索引，什么数据类型适合做索引还是有索引的时间复杂度。这块索引的概念基本说出来也但是颠三倒四，一会说树结构索引一会说哈希表索引，然后什么类型的数据这块我确实是不知道，给了很多提示但是我从来没接触过，没办法，都已经提示到了整型顺序排列的数据适不适合和布尔型适不适合，但是还是没答出来。然后时间复杂度这块我回答了好几遍O(1)，就一直是按照哈希表来说的，结果问的是树。其实到这基本就没啥指望了，后端后端不行索引索引不会，但是还是问了我个基础的问题，数据库事务。很不幸，我就记得个事务原子性，说了半天也不知道说的是啥。六、提问然后是问我有什么疑问没有。到这其实我已经完全不知道说啥了，就问了问字节跳动的企业文化和需要什么样的工程师，问了问我以后应该怎么学习往哪个方向发展，说了很多但是基本就是说我的基础能力需要提升，要学得扎实一点云云。总结就是一句话，还是学的太少。也没什么好说的，只能提升自身能力。做了一份大纲，之后按照大纲来补充。先做了数据结构、算法和网络工程的大纲，关于前后端数据库和安卓的部分之后再发上来。数据结构一、线性表1、元素移动2、元素查找二、栈和队列1、栈的实现①顺序栈②链栈2、队列的实现①顺序队列②循环队列③链队列④双端队列3、两个栈实现一个队列4、两个队列实现一个栈5、出栈顺序判断6、一个数组实现两个栈三、字符串、多维数组、矩阵1、串的存储结构2、主串与子串3、模式匹配（见算法）4、数组的存储结构5、数组的寻址6、特殊（稠密）矩阵的压缩①对称矩阵②三角矩阵③对角矩阵7、稀疏矩阵的压缩①三元组顺序表②十字链表8、稀疏矩阵的转置①直接存、顺序取②顺序取、直接存 9、广义表四、树与二叉树1、节点的度，根节点，叶子节点，孩子节点，双亲结点，兄弟节点，祖先，子孙2、树的深度3、树的表示①双亲表示法②孩子表示法③孩子兄弟表示法3、二叉树①子树、斜树、满二叉树②二叉树的遍历a、前序遍历b、中序遍历c、后序遍历d、层序遍历③存储结构a、二叉顺序表b、二叉链表④反转二叉树4、树、森林、二叉树5、最优二叉树①哈夫曼算法②哈夫曼编码6、线索链表7、堆与优先队列五、图1、有向图、无向图、网图、权2、邻接、度3、稀疏图、稠密图4、路径、路径长度、回路5、连通图、连通分量6、图的遍历（见算法BFS\DFS）7、图的存储结构①邻接矩阵②邻接表8、最小生成树（见算法）算法一、查找1、寻路算法（最短路）①弗洛伊德算法②迪杰斯特拉算法③贝尔曼-福特算法2、并查集3、二分查找（折半查找）4、优先搜索①深度优先搜索②广度优先搜索5、二叉搜索树①二叉搜索树a、二叉查找树b、红黑树②线段树6、双向广度搜索7、A*二、树相关算法1、最小生成树①普利姆算法②克鲁斯克尔算法2、二叉查找树（见一）3、平衡二叉树4、B树5、B+树三、图算法1、二分图匹配2、最小路径覆盖3、网络流、最小费用流四、排序（时间复杂度Avg/时间复杂度Worst/时间复杂度Best/空间复杂度/稳定性）1、比较排序①交换排序a、冒泡排序（O(n^2)/O(n^2)/O(n)/O(1)/稳定）b、快速排序（O(nlog_2⁡n)/O(n^2)/O(nlog_2⁡n)/O(nlog_2⁡n)/不稳定）②插入排序a、简单插入排序（O(n^2)/O(n^2)/O(n)/O(1)/稳定）b、希尔排序(O(n^1.3)/O(n^2)/O(n)/O(1)/不稳定)③选择排序a、简单选择排序（O(n^2)/O(n^2)/O(n^2)/O(1)/不稳定）b、堆排序（O(nlog_2⁡n)/O(nlog_2⁡n)/O(nlog_2⁡n)/O(1)/不稳定）④归并排序（O(nlog_2⁡n)/O(nlog_2⁡n)/O(nlog_2⁡n)/O(n)/稳定）a、二路归并排序b、多路归并排序2、非比较排序①计数排序(O(n+k)/O(n+k)/O(n+k)/O(n+k)/稳定)②桶排序(O(n+k)/O(n^2)/O(n)/O(n+k)/稳定)③基数排序(O(nk)/O(nk)/O(n*k)/O(n+k)/稳定)五、动态规划DP1、背包问题2、最长公共子序列LCS3、最长递增子串4、三角剖分5、记忆化dp六、数学算法1、辗转相除法2、（高精度）大数乘除法3、多边形七、博弈论1、博弈树2、二进制法八、字符串模式匹配1、BF算法2、KMP算法网络工程一、计算机网络体系结构分层1、OSI七层协议a、物理层b、数据链路层c、网络层d、运输层e、会话层f、表示层g、应用层2、TCP/IP四层协议a、网络接口层b、网际层IPc、运输层TCP/UDPd、应用层3、五层协议a、物理层b、数据链路层c、网络层d、运输层e、应用层二、物理层三、数据链路层四、网络层五、运输层六、应用层七、TCP/IP协议（网络层与运输层）1、定义：TCP/IP协议群。包括①网际协议：IP/ICMP/ARP②传输协议：TPC/IP③应用协议：HTTP/SMTP/FTP/TELNET/SNMP④路由控制协议：RIP/OSPF/BGP2、包、帧、数据包、段、消息3、数据流处理4、传输协议层①端口号②UDP③TCPa、三次握手b、四次挥手c、应答可靠性5、网际层IP协议①IP地址②路由③分包与组包④IPv6⑤域名系统DNS⑥ARP⑦ICMP⑧DHCP⑨NAT⑩IP隧道6、应用协议HTTP①工作流程a、建立TCP链接b、客户端发送请求命令c、客户端发送请求头信息d、服务端应答e、服务端返回响应头信息f、服务端向客户端发送数据g、服务器关闭TCP连接②基础a、请求与相应b、无状态c、cookied、URI定位资源e、请求方法（HTTP/1.1）1、GET2、POST3、PUT4、HEAD、DELETE、OPTIONS、TRACE、CONNECTf、持久连接g、管线化③报文a、HTTP报文b、报文结构1、报文首部、空行、报文主题2、请求报文3、响应报文c、请求行d、状态行e、通用首字段1、Cache-Control2、Connection3、Data4、Pragma5、Trailer6、Transfer-Encoding7、Upgrade8、Via9、Warningf、请求首部字段1、Accept2、Accept-Charset3、Accept-Encoding4、Accept-Language5、Authorization6、Expect7、Form8、Host9、If-Match10、If-Modified-Since11、If-None-Match12、If-Range13、If-Unmodified-Since14、Max-Forwards15、Proxy-Authorization16、Range17、Referer18、TE19、User-Agentg、响应首部字段1、Accept-Ranges2、Age3、ETag4、Location5、Proxy-Authenticate6、Retry-After7、Server8、Vary9、WWW-Authenticateh、实体首部字段1、Allow2、Content-Encoding3、Content-Language4、Content-Length5、Content-Location6、Content-MD57、Content-Range8、Content-Type9、Expires10、Last-Modifiedi、Cookie首部字段1、Set-Cookie2、Cookiej、其他字段④响应代码a、1xx：信息状态码b、2xx：成功状态码1、200 OK 请求成功2、204 No Content 请求成功但返回的响应报文没有实体主体3、206 Partical Content 客户端进行了范围请求c、3xx：重定向状态码1、301 Moved Permanently 永久性重定向2、302 Found 临时性重定向3、303 See Other 请求资源存在另一URI4、304 Not Modified 客户端发送附带请求时服务端允许访问但不满足条件5、307 Temporary Redirect 临时重定向d、4xx：客户端错误状态码1、400 Bad Request 报文语法错误2、401 Unauthorized 发送的请求需要有通过HTTP认证的认证信息3、403 Forbidden 请求的资源被服务器拒绝访问4、404 Not Found 无法在服务器上找到请求的资源e、5xx：服务器错误状态码1、500 Internal Server Error 服务端在执行请求时发生错误2、503 Service Unavailable 服务器正处于超载或停机维护⑤HTTP报文实体a、报文结构b、内容编码c、传输编码d、分块编码e、多部分媒体类型f、范围请求⑥协作Web服务器a、代理服务器b、缓存服务器c、网关服务器d、隧道e、Agent代理 本篇内容为原创内容，采用CC BY-NC-SA 4.0协议许可 2021-03-24 11:05 UtopiaXC 于大连