前言
最近有很多朋友去目前主流的大型互联网公司面试(阿里巴巴、京东、字节跳动、蚂蚁金服、滴滴),面试回来之后会发给我一些面试题。有些朋友轻松过关,拿到offer,但是有一些是来询问我答案的。
我特意整理了一下,有很多问题不是靠几句话能讲清楚,所以整理了一些资料来解答这些面试题。很多问题其实答案很简单,但是背后的思考和逻辑不简单,要做到知其然还要知其所以然。
饿了么一面(Java)
hashmap源码问题
HashMap底层结构 put操作讲一下
HashMap、HashMap如何保证线程安全、ConcurrentHashMap
JVM有哪些回收算法,对应的收集器有哪些?
jvm g1的内存模型讲一下,G1和CMS收集器的区别?以及G1收集器对CMS的改进?
java线程同步都有哪几种方式,synchonized和reteenlock的区别。
cas的原理,变量要用哪个关键字修饰,volatile实现的原理。
如果让你实现一个线程安全的队列,你会怎么实现。
mysql数据库优化会涉及到哪些?
手撕代码:按层次遍历二叉树?
spring中用到了什么,ioc有什么好处,aop是怎么实现的?
饿了么二面(Java)
自我介绍&项目
分布式锁的原理。
MySQL的事务隔离级别,分别解决什么问题?
常见的分布式事务方案有哪些?
如果让你实现一个https,你会怎么实现?
dubbo有哪些模块,底层通信的原理?
如何从0到1设计一个类似Dubbo的RPC框架?
饿了么三面(Java)
自己参与的项目,技术难度高的有哪些?
线上有实际的性能优化经验?
从SQL、JVM、架构、数据库四个方面讲讲优化思路,以及如何优先排序?
redis的持久化方式,redis3.0原生集群和redis读写分离+哨兵机制区别
如果让你实现一个mq,怎么样保证消息不丢失
你熟悉哪些中间件,谈谈你对他们的理解,以及对应的使用场景区别?
最后,你有什么想问我的?
饿了么四面HR
你个人的最大的缺点是什么?
在工作中和生活中遇见最大的挑战是什么?
未来有什么规划?
平时有哪些兴趣爱好?
。。。其余的大家都明白,HR基本上问的啥心里有数。。。不多说
总结
总体来说,如果你想转行从事程序员的工作,Java开发一定可以作为你的第一选择。但是不管你选择什么编程语言,提升自己的硬件实力才是拿高薪的唯一手段。
如果你以这份学习路线来学习,你会有一个比较系统化的知识网络,也不至于把知识学习得很零散。我个人是完全不建议刚开始就看《Java编程思想》、《Java核心技术》这些书籍,看完你肯定会放弃学习。建议可以看一些视频来学习,当自己能上手再买这些书看又是非常有收获的事了。
这些视频如果需要的话,可以无偿分享给大家,点击这里即可免费领取