Java开发面经验,从各个环节进行了详细介绍,这次面试中规中矩没有冷僻为难人的问题,你会发现进阿里并不难
**自我介绍:**哪个学校(本、硕),哪个专业,名字,技术栈(java+redis+mysql+nginx,方便面试官深挖的,会就此深入问基础问题,例如zookeeper等中间件,样式不求多,但说出的要不怕深入问)
一面师兄基础加项目面:
Redis是单线程的,为什么会这么快
答:1、纯内存操作。
2、单线程操作,避免频繁的上下文切换。
3、采用了非阻塞I/O多路复用机制。
4、使用hash结构、压缩表、跳表。跳表的好处?使用有序数据结构加快读取速度。
redis单线程,如何处理并发请求?
答:单线程多进程集群方案,主从读写分离。非阻塞IO 内部实现采用epoll。
Redis持久化有几种方式?
答:RDB和AOF。RDB指定时间间隔内将内存中的数据集快照写入磁盘,整个Redis数据库只包含一个文件,方便进行备份。AOF以日志的形式记录服务器所处理的每一个写、删除操作,支持每秒同步、每修改同步,每秒同步效率较高。
![](/qrcode.jpg)
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份----在剩余钱中随机取一个范围内的数,即为刀的位置,刀-剩余钱初始值=一份红包
抢红包如何保证每份红包有最多最少范围?
答:这个因为之后会更新一篇关于微信红包算法以及带上下限的红包算法里面会讲到
四面交叉面综合面:
面试官是个在美国工作的阿里云大佬,全程和蔼地让我把简历上的几个项目,详细描述特色功能、难点和亮点。这里注意尽量把业务和源码底层联系到一起,例如spring中的一些aop等。
1、app开发时间用了两个月,开发周期较长,是几个人一起开发的?答:一个人。2、在这个项目中有没有人在带我,在哪里帮助了我?答:有一个同事带我,在很多需要经验判断的地方帮助我,例如栏目用ajax穿***行增加删除,两个ajax动作不同步导致经常出错,同事让我把ajax同步,加了代码{ajax:false;}。还有我做了图片瀑布流,但经常卡顿,同事教我进行调试查看每个js文件用的时间,把https://这样外来的引用下载,变为本地引用就不卡了。
当然大家肯定会说只问了这么点嘛这么简单,肯定不止这些,其实主要是告诉大家不要把面试官想的那么可怕,你不是去和他battle,面试前做好准备,心态很重要
去面试之前其实我也准备了蛮久,包括Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发,设计模式,MySQL等知识点解析,各种面试真题一直刷,如果大家有需要,这里可以分享一波哦 关注后点这里
一:线程、数据库、算法、分布式、微服务、框架、Spring相关知识
二:一线互联网P7面试集锦+各种大厂面试集锦
三:微服务
四:JVM
五:Redis
如何获得这份优质的资料呢?
快速领取通道:点这里免费获取!诚意满满!!!
Java面试精选题、架构实战文档传送门:https://jq.qq.com/?_wv=1027&k=iWJZw1rp
整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~
你的支持,我的动力;祝各位前程似锦,offer不断!!!