阿里面经,详细到每个环节(已拿offer)
Java开发面经验,从各个环节进行了详细介绍,本部门面试中规中矩没有冷僻为难人的问题,我们的业务扩张,但是投递的人太少了,急缺人,你会发现进阿里并不难
自我介绍:哪个学校(本、硕),哪个专业,名字,技术栈(java+redis+mysql+nginx,方便面试官深挖的,会就此深入问基础问题,例如zookeeper等中间件,样式不求多,但说出的要不怕深入问)
Redis是单线程的,为什么会这么快?答:1、纯内存操作。2、单线程操作,避免频繁的上下文切换。3、采用了非阻塞I/O多路复用机制。4、使用hash结构、压缩表、跳表。跳表的好处?使用有序数据结构加快读取速度。
redis单线程,如何处理并发请求?答:单线程多进程集群方案,主从读写分离。非阻塞IO 内部实现采用epoll。
Redis持久化有几种方式?答:RDB和AOF。RDB指定时间间隔内将内存中的数据集快照写入磁盘,整个Redis数据库只包含一个文件,方便进行备份。AOF以日志的形式记录服务器所处理的每一个写、删除操作,支持每秒同步、每修改同步,每秒同步效率较高。
Redis的命令用考虑并发吗?不需要。为什么?Redis所有单个命令都是原子性的。为什么具有原子性?Redis是单线程的。 每个命令是一个任务,这些任务都会由Redis的线程去负责执行,任务要么执行成功,要么执行失败。
选择一个项目说说?
答:特色1:单点登录:不需跨域的时候,redis存储共享信息,拦截后查cookie是否含token,用jwt解密查看用户名id等信息。登录和注册时,根据表单提交的信息,生成相应的token,用jwt给token加密并存入cookie。需跨域时:用urll带着参数token去跨域。
答:特色2:配置热部署:不需要重启服务,就让配置信息实时生效,例如常变化的配置(登录页、过期时间)。config.properties中放变化属性,config类中设置refreshconfig()方法,用资源加载器读取config.properties文件,并转为输入流,加载进新config.properties文件。问:若有很多台机器同时工作,怎么保证每台机器的配置文件都重加载?回答不上,面试官提醒用消息队列。
由于项目经验不足,项目这里回答的不好,所以后面的几面几乎不问项目了,都在问基础和场景,大厂面试就是不死抓短板,而是发掘优点,只要优点足够好就能通关。每面结束让我提问,我都会问我最大的缺点是什么,面试官的建议我回去会继续改进。
HashMap线程不安全的体现?扩容会造成死循环。怎样解决这个问题?1.7用头插法,1.8改为尾插法。这个改变有什么作用?JDK1.8是因为加入了红黑树使用尾插法,能避免出现逆序且链表死循环的问题(向右找地方查,向左get)。如果两个线程都发现HashMap需要扩容,它们会同时帮助扩容。 因为头插法,存储在链表中的元素的次序会反过来,如果条件竞争发送了,会出现环形链表。 之后当我们get(key)操作时,就有可能发生死循环。
字节码文件中都有哪些结构?Class文件中有魔数、主版本号+副版本号、常量池、访问标志、索引、字段表集合、方法集合、方法计数器。
了解spring 吗?例举一下Spring 框架用到的设计模式?1、单例模式:spring创建的bean默认为singleton,对于类的实例提供一个访问它的全局访问点。2、工厂模式:BeanFactory功能(管理所有bean生命周期)。3、代理模式:aop中有体现,Jdk/Cglib。
二面的问题都不是很难,最后问为什么不读博?因为读博自己拿不定方向,怕研究了一个冷僻的方向,更喜欢在实践中研究落地,阿里的很多技术研究有不逊于博士。。。。夸就完了。如果来阿里想学到什么?想从业务中深入了解底层,跟牛人学习,以后参与开源项目等。
微信抢红包算法,保证随机性?答:设共Y元,K人。每个人至少分到0.01元,剩(Y-K*0.01)元。把剩下的钱用(K-1)把刀切成K份----在剩余钱中随机取一个范围内的数,即为刀的位置,刀-剩余钱初始值=一份红包
抢红包如何保证每份红包有最多最少范围?答:https://blog.csdn.net/paincupid/article/details/82054647中的第二点有很详细的解答。
面试官是个在美国工作的阿里云大佬,全程和蔼地让我把简历上的几个项目,详细描述特色功能、难点和亮点。这里注意尽量把业务和源码底层联系到一起,例如spring中的一些aop等。
1、app开发时间用了两个月,开发周期较长,是几个人一起开发的?答:一个人。
2、在这个项目中有没有人在带我,在哪里帮助了我?答:有一个同事带我,在很多需要经验判断的地方帮助我,例如栏目用ajax穿***行增加删除,两个ajax动作不同步导致经常出错,同事让我把ajax同步,加了代码{ajax:false;}。还有我做了图片瀑布流,但经常卡顿,同事教我进行调试查看每个js文件用的时间,把https://这样外来的引用下载,变为本地引用就不卡了。
今年的企业智能有点不一样,特别在疫情期间,我们做了很多,2020开年的这场疫情,带来了史无前例的亿人SOHO,让“企业数字化”的概念深入人心。