最近找实习中,选择的是java方向的后端开发。

找的时间有些晚了,七月才开始投暑期实习,很多公司三四月就开始招了,找了好多实习都是已读不回,今年的市场和经济真是不容乐观啊!

只能寄希望于秋招了吧。

接下来说一下理我的第一次的笔试题吧

笔试

可能是校招的原因,笔试题并不是很难。

但是他使用的代码笔试平台不给你检测样例的功能,导致你只能自己构造样例或脑测,有些麻烦

也可能是我不明白这些测评平台的测评方法

第一题,二叉树的遍历打印

很简单的二叉树遍历,但是要求是顺序相反

也就是说先从左到右遍历

再从右到左遍历,如此循环

因为面的是java后端,所以使用的是java写程序,因为学算法和写算法都是用的C/C++,对于java 的库函数不是很熟悉,有些像是被削弱实力三分的感觉(虽然本来就不太强是了

解决方案:用数组模拟二叉树,每个节点N的子结点是2*N+1或者2*N+2,设置空节点为-1,如果是空节点 则跳过

根据层数%2来判断是先左还是先右。

先左则2*N+12*N+2,先右打印则相反

值得一提,原本是想使用队列来实现,但是发现队列完全没有到…

第二题,缓存

题目是缓存的提取和存储,超过指定长度则删除替换使用频率最少的缓存

要求O(1)的时间复杂度,提示用新的第三个字段存储使用频率

我的想法是用空间换时间,既然是O(1)复杂度那我就定义两个足够长的数组

一个是value[key]存储value,一个是number[key]存储number,这样就可以O(1)的复杂度实现提取信息和存储信息了

写文时仔细想了一想,hashMap的Value是一个Object就可以实现这个效果了,这个Object是value和使用次数组合就好了…

第三题,sql

商品表、订单表(用户、总价格、时间)、详细订单信息表(有详细的商品件数等等)

是否还有其他表我我忘记了

要求:六月用户首单平均价,获客代价平均值

获客代价=商品单价*件数-最终价格

很痛苦,没有调试的程序,随便写了

第四题,情景题

登录时,十分钟内登陆失败三次账号锁定三十分钟

使用markdown格式答题

要求考虑高并发、高可用、高稳定等等

我的想法就是redis了,设置过期时间,高可用高并发就集群

总结

欠缺很多,沉淀俩个月找秋招

附一张最近喜欢的月落西山图