转载声明:文章来源:https://www.nowcoder.com/feed/main/detail/655924c5271a47ea94272ca396b927a9
一面 : 1h
自我介绍: 5min
项目涉及到的八股: 40min
1. CAS的缺点?
·ABA问题
解决方案: 同数据乐观锁的方式给它加一个版本号或者时间戳,如AtomicStampedReference
·自旋消耗资源
解决方案:破坏掉for死循环,当超过一定时间或者一定次数时,return退出。JDK8新增的LongAddr,和ConcurrentHashMap类似的方法。当多个线程竞争时,将粒度变小,将一个变量拆分为多个变量,达到多个线程访问多个资源的效果,最后再调用sum把它合起来
·多变量共享一致性问题
解决方案:CAS操作是针对一个变量的,如果对多个变量操作,可以加锁或封装成对象类解决
2.Spring依赖注入的方法?具体实现?
Set方法注入 构造器注入 静态工厂的方法注入 实例工厂的方法注入;实现可通过注解/xml配置文件
3.如何实现分布式锁?
·在获取锁时存入线程标示
·在释放锁时先获取锁中的线程标示,判断是否与当前线程标示一致(解决普通setnx分布式锁并发条件下,a线程阻塞获取锁超时,b线程进来也能获取锁的问题)
·如果一致则释放锁
八股 :
1.LinkedList底层原理?
基于双向链表的数据结构,头尾节点增删时间复杂度是O(1),其他都需要遍历链表,时间复杂度是O(n),给定节点增删时间复杂度也是O(1),让cur.pre = cur.next即可
反问 :(10min)
1. 实习生实际项目开发场景?
答: 技术栈没有出入,多了一些微服务架构和分布式相关知识,更多在于业务实现,要考虑的问题与单体系统不同
2. 面试时如何筛选实习生?
答: 水平到了基准线就会继续进入下一轮
算法: 合并两个有序链表
需要自定义链表结构 自定义输入输出(没搞出来 不会用acm模式)但是核心代码a出来了
面试完十分钟之后立刻发来二面链接,菜鸟震惊
二面:1h
纯项目拷打 无八股 更加注重项目细节 讲述自己如何从0开始搭建项目的过程
总结一下,两个面试官都只问项目,接着落实到具体实现以及用到的技术栈+项目难点,几乎没有烦人的八股/源码拷打(可能穿插在项目里了吧),跟我之前面的厂完全不一样的感受,现在等后续通知中
帖子还没人回复快来抢沙发