记一次没有任何准备的电话面试

时间:2022-11-09 09:26:50

由于各种原因,打算换个环境,找找机会。于是,开放了Boss直聘的简历。
很快,跟各个HR建立了简短联系,并发送了相关简历。
傍晚,接到一个陌生电话, 是某科技公司打过来的,问我是否方便面试。一番介绍后,就正是进入电话面试。
现将面试过程进行简单回顾:
问:现有一堆有序数据,如何快速定位到要找的那个数据?
答:从中间开始找,如果当前数比需要找的数小的话,从后半段找,反之,从前半段找,以此类推,继续从剩余半段中找,直到找到为止。
问:现有10个数据,如何去重?
答:可以考虑HashMap?
问:现有这样需求,要求服务器在30分钟内,最多只允许访问5次,请问该如何实现?
答:可以考虑使用session,记录sessionid、最后一次访问时间及次数。如果在30分钟内再次访问,则将次数+1,超过5次,则不允许访问。
(貌似想得过于简单)
果然。。
问:这样并不能保证30分钟内,最多5次。比如1分钟内访问了1次,过29分钟,又访问一次,此时,访问次数为2,那最后一次访问时间是29分钟的那一次,紧接着,又在那一分钟内,访问29次,还是可以的。这样包括第一次,实际已经6次了。
答:确实考虑不是很周到。可以考虑再记录一个字段,一个字段是第一次访问时间,第二个字段是最近一次访问时间,最后一个是访问次数。每次访问,都与第一次访问时间进行比较,如果超过30分钟,则置零,如果小于30分钟,则更新次数及最近一次访问时间。
问:对JVM了解吗?
答:简单了解。
问:假如有一个程序,假死在那边,不运行,如何去找到原因
答:这种假死,可能是多线程没处理好引起的。JVM提供相关的查询命令,可以找出相关线程。
问:那如何定位到相应的代码?
答:没办法答上。
问:Mysql中,有一个两张表的联合索引,那单独查其中一张表的时候,这个索引起效果吗?
答:暂未用到联合索引。
问:Mysql数据库,有一条sql语句查询比较慢,如何对表进行优化?
答:第一,可以考虑加索引。第二,如果表字段很多,可以考虑对表进行横向拆分,拆分成多张表。第三,如果表中数据很多,可以考虑将历史数据存入历史表中,主表中只存放常用数据。
问:HashMap实现使用了红黑树和散列,请问,为什么不直接使用红黑树或散列,而将两者结合?
答:主要是为了效率。(具体答不上来。)
中间还有几个问题,有点记不清了。感谢公司给我这个机会。同时,也对自己的不足有了更深刻的认识。
自嘲:面试完毕后,默默地将简历设置为不公开。在面试前,还是先做好准备吧。一个做了8年增删改查的程序员,出路在哪里?确实,工作中,解决各种疑难杂症,但都没有总结归纳。也许面试题,也是对工作的一种总结。