一句话总结:很深入、用面试官的话来说:我想知道你对我提出的问题的想法
用时:1个小时8分钟
备注:回答没有我写的那么直……
一、自我介绍+项目交流(有点儿深入)
二、基础
- 语言
- C++和java的区别
- 垃圾回收的具体机制
2. 计网
- 问:tcp出来几十年了,肯定有点跟不上现在的发展了,你有什么改进的方案吗
- 问:在局域网中,执行ping+一个公网地址,网络层及以下会发生什么
- 问:看你有做过web项目,http了解吗
- 答:了解一点
- 问:知道http2.0
- 答:只知道https
- 问:知道http3.0吗
- 答:不知道
- 问:hhtps的CA机构有什么用
- 答:互相信任,中间机构
- 问:不要它行吗
- 答:(不清楚)
- 问:https为什么同时使用对称密文和非对称密文
- 答:(有了解,但是不是很深入,就没答上来)
- 问:session和cookie有什么用,不要cookie行不行、不要session行不行
- 答:……
- 问:hh听过sesioncookie(???)吗
- 答:没有……
- 然后就没问了……因为的确答不上来
3. 数据库
- 问:解释第二范式、以及引入第二范式的用途
- 答:对不起不记得了
- mysql相关:为什么要加上索引
- 回答:因为可以提升检索速率
- 问:问什么可以提速
- 答:采用的数据结构(hash、b+等),决定了比顺序查询速度会快很多
- 问:b+树有什么特点
- 答:多路平衡、叶节点存储数据、叶节点连接
- 问:是不是用b树也可以
- 答:回答了它们的区别,并且指出了b+树在范围查询的优势
- 问:是不是只有范围查询
- 答:肯定不止,但是不清楚了(嘶……)
4. Linux操作系统(回答的也很凉)
- 问:如何手动销毁一个进程
- 答:exit?但具体不知道
- 问:提示:kill -9 pid
- 答:不知道
- 问:提示:敲出这行命令之后,进程如何响应这个指令的呢
- 答:回收分配的资源,销毁pcb
- 问:提示:刚刚那个问题有暗示你,往进程间通信去思考
- 答:进程间通信有好几种方法,管道、消息、(打断)
- 问:我知道这些你们肯定都知道,我想知道的是对我刚刚的问题,他是怎么通信的
- 答:这个就得知道是那种通信方法ya
- 问:提示,有kill -9,就可能有-1 -2 -3,你可以往这个方向去思考
- 答:那就是信号了,不同的数字代表不同的讯息
- 又问:开辟一个进程的时候,会分配什么
- 答:内核空间开辟pcb,用户空间分配空间
- 问:pcb有什么用
- 答:是对一个程序进入系统开始运行的表示,是一个数据结构,存储运行时的状态信息
- 问:pcb里面存储了些什么
- 答:pid、消息队列头、打开文件列表投等等……
- 问:内存空间又存了什么
- 答:寄存器、堆栈、数据等
- 问:pcb和内存空间这些数据由关联吗
- 答:有是肯定有,但是具体不知道
- 又问:好,就了解这么多,或者还有一个问题,你可以思考看会不会:组合shell命令,把一些进程一起删掉
- 答:不会,没学过shell(面试官心里肯定你怎么什么都并不会呜呜呜呜)
- 问:软链接和硬链接这个你可能知道
- 答:我真不知道,不记得了……
- 补充:好像有问java程序,操作系统内部是如何标识它是java的、也可能不是这个问题……总之就是不会
三、算法
一个超大(几亿行数据)的日志文件,记录昨天的日活跃用户登录登出情况,每行三个信息:user_id, 登入时间轴(XXXs),登出时间轴(XXXs)(备注:uerid唯一、即当天该用户不会重复登录)
求两个值:一天内的同时在线人数峰值;这个峰值的活跃时长(即峰值的最大持续时间)
答:开辟一个大数组,每个时间段内的人数+1
问:时间复杂度
答:O(n)(n指文件的行数)
问:数组的访问不耗费时间吗
答:要……
问:所以应该是O(n*m) (m指数组的大小),所以是有改进的空间的
问:提示:知道这一秒的在线人数,下一秒的登入人数,下一秒的登出人数是不是就可以知道下一秒的在线人数,可以往这个方向去思考
答:就跟他讲了,然后就开始写
第一问挺好写,但是第二问,我的答案,只能求出峰值的第一个连续值,不能求出 最大连续峰值(其实这个题是个动态规划,求数组中的连续最大值)
问:好,就先了解这么多……
四、总结
大致就是上面那么多,面试官人挺好的,并不咄咄逼人,会给提示,但是考察的问题也很刨根究底,对于基础课程的准备要更深入理解,算法题说不上多难,但是还是要多刷题……
祝各位看官面试顺利~
全部评论
(20) 回帖