上海卫瓴信息科技有限公司面经
学习半年了,第一次发帖,记录一下~
1. 自我介绍
2. 长达20多分钟的项目问答。
2.1 Nginx 负载均衡/反向代理 在项目中是如何使用的 ?
2.2 什么是正向代理?举个例子。
2.3 负载均衡算法有哪些?答了轮询和随机,还有随机轮询法、源地址哈希法等
2.4 如何让Nginx的负载均衡都到同一台服务器? 我说只用一台服务器就行了,或者应该可以在Nginx中设置一下ip吧? 他摇了摇头。答案:使用按ip映射或者按访问资源url映射等负载均衡策略。
2.5 redis在项目中的使用场景?答:缓存、分布式锁、分布式session
2.6 为什么要用分布式session?
2.7 redis的数据类型和它们的使用场景?
2.8 RabbitMQ是怎样保证事务最终一致性的?这里没答上来。。。面试官怀疑了下项目是不是我自己做的。。。555
2.9 说一下登录这个功能都做了那些事? 答:前端将表单信息发送到后端,然后去数据库查找进行此用户信息进行校验
2.10 如何解决用户多次点击登录按钮? 答:加验证码
2.11 令牌(Token)了解吗? 答:不太了解
3. 基础问答
3.1 java中都有哪些数据结构?
3.2 如何实现一个LRU? 答:一开始说用concurrentHashMap,不对,然后又说用链表+hashmap可以,他说OK。其实就是LinkedHashMap,一开始想说的是这个。
3.3 hashmap初始值?什么情况下扩容?怎么扩容?为什么容量要是2的倍数?线程安全吗?为什么不安全?
3.4 关于sql索引,问题没听明白,我直接说了不太了解索引,就直接往下问了。
3.5 mysql的事务隔离级别有哪些?以及常见的事务并发问题说一下?
4. 小问题就记得这么多了,最后一题撸代码,问题如下:
给出一个数组,找到里面的任意一个峰值元素(值比前后都大)的下标,默认把array[-1]和array[n]当作负无穷。要求时间复杂度log(n)。
一开始没看到“把array[-1]和array[n]当作负无穷”这句,一度认为这题无解,被面试官点拨一下后才用二分法完成了。思路就是枚举中点,看这一点正处于上升还是下降的状态,若是上升则右边一定有解,反之左边,log次缩小区间即可得到答案。
最后边界依旧出了一些问题,我是把超出区间的值用-1e9来表示无穷小,他说我们是不知道数组中的最小值的,有可能还更小。。。让我再想想其他方法去处理。。。最后的最后还是没能把这里优化掉。有点想法,但感觉实现起来很麻烦。就结束了。
吐槽一下:公司比较年轻,但面试难度确实有点超乎我的意料,和我上一家面试的水平完全不是一个难度的。项目还要再熟悉一下,这次差点(已经)把自己埋了。。。
面试结果:第二天收到通知,挂了。不过作为我的第一次真正意义上的面试,还是收获了一些东西,继续加油吧。
#java求职#