第一次笔试
最近找实习中,选择的是java方向的后端开发。
找的时间有些晚了,七月才开始投暑期实习,很多公司三四月就开始招了,找了好多实习都是已读不回,今年的市场和经济真是不容乐观啊!
只能寄希望于秋招了吧。
接下来说一下理我的第一次的笔试题吧
笔试
可能是校招的原因,笔试题并不是很难。
但是他使用的代码笔试平台不给你检测样例的功能,导致你只能自己构造样例或脑测,有些麻烦
也可能是我不明白这些测评平台的测评方法
第一题,二叉树的遍历打印
很简单的二叉树遍历,但是要求是顺序相反
也就是说先从左到右遍历
再从右到左遍历,如此循环
因为面的是java后端,所以使用的是java写程序,因为学算法和写算法都是用的C/C++,对于java 的库函数不是很熟悉,有些像是被削弱实力三分的感觉(虽然本来就不太强是了
解决方案:用数组模拟二叉树,每个节点N的子结点是2*N+1
或者2*N+2
,设置空节点为-1,如果是空节点 则跳过
根据层数%2来判断是先左还是先右。
先左则2*N+1
再2*N+2
,先右打印则相反
值得一提,原本是想使用队列来实现,但是发现队列完全没有到…
第二题,缓存
题目是缓存的提取和存储,超过指定长度则删除替换使用频率最少的缓存
要求O(1)的时间复杂度,提示用新的第三个字段存储使用频率
我的想法是用空间换时间,既然是O(1)复杂度那我就定义两个足够长的数组
一个是value[key]存储value,一个是number[key]存储number,这样就可以O(1)的复杂度实现提取信息和存储信息了
写文时仔细想了一想,hashMap的Value是一个Object就可以实现这个效果了,这个Object是value和使用次数组合就好了…
第三题,sql
商品表、订单表(用户、总价格、时间)、详细订单信息表(有详细的商品件数等等)
是否还有其他表我我忘记了
要求:六月用户首单平均价,获客代价平均值
获客代价=商品单价*件数-最终价格
很痛苦,没有调试的程序,随便写了
第四题,情景题
登录时,十分钟内登陆失败三次账号锁定三十分钟
使用markdown格式答题
要求考虑高并发、高可用、高稳定等等
我的想法就是redis了,设置过期时间,高可用高并发就集群
总结
欠缺很多,沉淀俩个月找秋招
附一张最近喜欢的月落西山图