快手春招客户端电商方向面经
3.11 首先致谢广大牛友的面经,让我有了面试的底气 赞!(这里安利一波我每次记录面试问题的webapp,我来,支持Markdown语法 www.wolai.com)
【一面】
说说http1.0、http1.1、http2.0的区别
这里我一时没想起来,回答说 “不清楚”(牛友们要看呀,我面试遇到两次了)
对计算机网络,操作系统,数据结构哪个最熟悉?
数据结构
说下链表和数组队头队尾添加元素,还有修改元素的时间复杂度?
链表添加元素O(1)修改元素O(n)
数组有序情况添加元素O(n) 修改元素是O(logn) 数组队头添加元素需要往后移动N次,队尾不需要移动,所以平均为O(n),这里修改元素不考虑它打乱顺序或者理解为删除某个元素
操作系统进程和线程基本概念?
线程开销为什么比进程小?同一个进程的线程省去了上下文切换等等
进程的五个状态以及什么情况会相互转换,举出例子? 创建态、就绪态、运行态、阻塞态、结束态...
说说使用浏览器输入“百度”之后发生了什么,用你最熟悉的方面回答,比如网络层传输层应用层等?
个人的回答:首先浏览器将数据打包通过https传输,而底层依托的是TCP协议,服务器收到请求返回相应的数据,若成功返回则状态码是200(这里先不考虑断点续传,有兴趣的牛友可以看下,应该问的挺多),系统将数据中的端口对应浏览器的端口,分发给浏览器
说说IP包结构?以及如何寻址?
我一开始没想起来,后来面试官提示我才说了源IP和目的IP,后面就是说了一下ip地址越靠前范围越大,一级一级寻址,通过路由器转发什么的(牛友可以自己查下具体包结构顺便看下TCP以及UDP可能会问)
说说你熟悉的设计模式?
单例模式(本以为面试官会问怎么实现的...)
那你知道的生产相关的模式还有哪些?
我想到工厂模式,然后回答工厂模式的设计思想,定义接口,有需要就自己实现相应的接口(这里牛友可以再看看c语言编程中文网,对设计模式和开闭原则做了深入浅出的讲解,我只看了一遍记不太清了)
http与https的区别?
https在http的基础上增加了SSL(secure sockets layer)(其实目前流行也可以说是TSL,牛友感兴趣可以查下)
那https的SSL如何实现的?
我回答的是用私钥传递公钥,公钥传递数据,即非对称加密和对称加密结合
为什么这么设计?
因为对称加密速度快,传输数据效率高,非对称加密速度慢些
为什么不直接使用对称加密?
我说的是对称加密发送方和接收方都是用的公钥,一旦公钥泄漏,传输就不再安全
非对称加密数据传输流程?
接收方跟别人说,我要接收数据了,然后将公钥公之于众,大家想传送数据就用公钥加密传给我,如果有人截获,没有私钥进行解密,依然不知道发送给接收方的是什么内容(时间有点长了,就记得这么多)
算法题
一个数组只有两个数字只出现一次,其余都出现了且仅出现两次,问如何在O(n)时间复杂度,O(1)空间复杂度求出这两个数字?
我一开始没有太好的思路,想的是用map记录出现次数,然后输出出现次数刚好为1的,后来面试官提示我用位运算,见我还是不太懂,就说了异或运算,考虑只有一个数字出现一次的情况,再考虑有两个数字的情况,我当时真的没有想到,可能是算法题做的还是太少了(一开始以为自己凉了,过了两天就有hr小姐姐约我二面的时间,我想这次多准备些时间,就约的下周三)
算法解答
https://www.nowcoder.com/practice/389fc1c3d3be4479a154f63f495abff8
【二面】
这一面直接就是项目面了,我以为有三面又看了很多语言和数据库方面的知识,这里推荐javaguide.cn,数据库相关的知识我都是在上面看的
主要问下项目的功能,如何实现以及自己做的工作;(我是和搭档做了一个路书分享平台app,感觉快手比较看重整体能力,之前的面试官就有问是不是从零到一实现的,二面面试官有通过我的简历上的链接打开我的github项目,我感觉自己之前的工作得到了极大的认可,这里再谢谢快手面试官给我的良好面试体验)
展开问了一下项目的介绍,比如为什么加入新建景点的功能,以及实现的难点,还有宣传景点可以采取的新的措施,除开自己项目实现的部分;
使用的Flutter框架给你的感受是?用几个词语评价
我说的是包管理方便,热重载,其他一会没想起来
算法题
一个链表删除重复出现的节点,比如1->2->2->2->3->5删除后应该是1->3->5注意这里是有序的链表节点
算法解答(这部分我会再写一下,到时候补充进来,我之前是用的两遍遍历记录出现次数再引入哨兵节点放入链表头部,判断出现次数开始删除,这里可以直接使用pre指针和cur指针进行判断)
https://www.nowcoder.com/practice/71cef9f8b5564579bf7ed93fbe0b2024
3.13个人解法补充
https://blog.nowcoder.net/n/149da802fbf64ab89d60c6d6b3417966
【HR面】
简单介绍;
自己先前面试中的不足? 我说的是编程这块还需要多加练习
通过什么方式提升自己的技术? 任务驱动,根据遇到的问题,分析任务,然后选型工具,学习
跟同届学生比自己的优势? 均衡,自己在系统开发能力得到过不错的认可,比如软件工程课程设计获得过优秀评价等,然后自己带队过暑期实践以及组织过“经”英来了讲座,在沟通交流上也还可以
期望工作城市等
入职后一年或者一年半最需要补足的地方?我说的是算法和公司使用的成熟理论以及框架
最后感谢牛友们的面经,快手面试官们的耐心引导和交流,有一说一快手的面试体验真的很不错,我第一次收到面试之后还有面试感受评价的问卷
然后今天收到意向书,完结。
#面经##校招##快手#