本文先以日历的形式回顾一下秋招之路,让你参考一下某厂的加工进度。然后总结了春秋招聘的Java面试题库;做最后的总结展望未来,开始新的旅程~
面试经历
京东面试真题
面试经验分享
1.面试经历2018年的冬天特别冷,这无疑是程序员的冬天。年底我也下岗了,(整个业务线都下岗了~)但是临近年底失业回家不太好,所以投了几份简历,其中有一份在JD.COM,JD.COM爪哇岛邮政。
1.岗位描述:参与了京东金融保险核心业务系统底层架构的设计和重构;2.持续优化高并发场景下的系统性能;3.与保险公司对接、联调的接口;4.保险产品智能推荐系统的开发:5.对接财务流程相关系统。1.任职要求:,计算机相关专业本科以上学历,较强的逻辑思维能力,较强的责任心和主动性;2、3年以上J2EE开发经验,互联网开发经验,JAVA基础扎实,能熟练运用设计模式;3.熟悉Spring、Struts2、Ibatis等常用框架,了解机制;4.熟悉分布式开发、常用SOA框架、多线程、网络编程等。5.熟悉常用数据库和优化,熟悉常用缓存和NoSql技术;6.熟悉Zookeeper、MQ等组件;7.有高并发、大数据量的系统开发和优化经验者优先;8.有互联网金融,尤其是保险业务发展经验者优先。
2.京东面试真题(答案见文末)一面(主要是基础面)
自我介绍,主要问你做过什么,擅长什么。
@Autowired的实现原理
Bean的默认作用域是什么?其他作用范围?
指数的概念是什么,作用是什么?
MySQL中主要的索引结构有哪些?哈希索引和B树索引的比较?
说说Java线程池的原理?什么是线程池?线程池工厂的线程池类型有哪些,它们的线程池参数是什么?
Hashmap原理,用哪种方法处理哈希冲突?
BIO、NIO和AIO之间有什么区别和联系?
Jvm内存模型jmm知道这一切
谈谈Java GC机制?
Java如何收集垃圾?什么对象会步入老年?
垃圾收集算法有哪些?为什么新一代要用复制算法?
HashMap的时间复杂度?如何解决HashMap中的哈希冲突?Java8中HashMap有什么变化?
黑树需要比较大小才能插入。对比的依据是什么?其他哈希冲突解决方法?
而哈希b树呢?它们适用于哪些场景?哪个更好?
二面(数据库问的比较多)
自我介绍
为什么MyISAM查询性能好?
说说交易特点(酸)?
Mysql是数据库的默认存储引擎。它的优点是什么?
MySQL事务隔离级别,分别解决什么问题。
慢速SQL查询的常见优化步骤有哪些?
说乐观锁,select for update,写sql实现?
说说TCP协议的三次握手和四波的过程?
用过哪些rpc框架?
Java网页过滤器的生命周期?
三面(综合面主要分布式及缓存)
介绍一下自己,说说项目吧!
锁定的机制是什么?
横向和纵向数据库分段的设计思想和顺序
Redis如何解决关键冲突?
如何保证数据库与redis缓存一致
如何使用项目消息队列?使用了哪些具体的业务场景?
JVM使用的相关分析工具有哪些?具体的性能调优步骤?
如何优化Mysql的慢速SQL?有没有其他优化的方法?
在线服务器监控指标,你认为哪些指标最需要关注?为什么?
soa和微服务有什么区别?
单机系统演变成分布式系统会涉及哪些技术上的调整?请详细描述从前端装载到后端。
设计一个秒杀系统?
面试真题的答案我已经整理再来一起,由于文章篇幅太长,需要的朋友可以加QQ群:935692859 进群免费领取资料!
3.面试经验总结以及学习路线分享:面试经验总结:
面试时尽量早点到。如果你能早点面试,面试官会更愿意给你及格(就像中国好声音,一开始总是转的很野)。
面试的时候给你转过去。
的幽默细胞,尽量把面试气氛调得愉快一点,这样面试官能更深的记住你。说自己优点的时候一定辅以证据,不然面试官只会当作耳边风
不会的问题不要强答,小心有坑,可以这样说:“不好意思这个问题我不会,但是如果让我来设计我会.......”
面试其实是一个双向选择,面试官在评估你的表现,同时由于面试官也代表公司,他的素质及提的问题也是你应该评估的方面,所以不要紧张。
使用幕布,在每次面试前将自己总结的知识过一遍。我幕布上写了几万字的笔记,每次面试都拿出来看一遍,所以面试问到的基础我基本都能应答入流。
学习路线:
大部分职业都是需要有成长体系,才能让人有奋发向上的追求。架构师就是程序员这个群体成长道路上往往会出现的一个重要节点。每个好架构师都是一位出色的程序员。然而好的程序员进阶为架构师,并不容易。
对于有一定后台研发经验(尤其是5年以上经验)的程序员们来说,成为架构师的渴望更加强烈,因此会花更多时间学习,提升架构技能,但常常由于客观条件限制,面临着不少难点:接触不到一线实战架构技术,尤其是有一定的技术深度和难度架构技术。不了解核心技术点所处的具体背景是什么?同时,又迫切需要掌握:业界目前主流干货技术 + 前沿技术,互联网核心技术硬技能 + 核心软技能,掌握架构技术的本质,知其然更知其所以然,架构筑基篇,深入内核,直击故障,拒绝蒙圈。
所以你需要一个明确的学习路线----这是一个典型的程序员的成长过程:
使用Java---->深入理解Java积累经验------>独立设计分析能力------>独当一面的多面手!
因此,你必须学习:
一、开源框架解析(各
程序员每天都和代码打交道。经过数年的基础教育和职业培训,大部分程序员都会「写」代码,或者至少会抄代码和改代码。但是,会读代码的并不在多数,会读代码又真正读懂一些大项目的源码的,少之又少。这也造成了很多错误看源码的方式。
那要如何正确的分析源码呢? 我们的目标应该放在最常用的框架上面:
二、架构师筑基
从架构设计,到应用层调优,再深入了解底层原理,扎实的Java基本功才能让自己变为扫地神僧:内存模型,并发模式,线程模型,锁细节等等
三、高性能架构
我们不仅仅对项目要运筹帷幄,还要能解决一切性能问题。只有深入学习JVM底层原理,Mysql底层优化以及Tomcat调优,才能达到知其然,知其所以然的效果。除了性能优化之外,也能提供通用的常见思路以及方案选型的考虑点,帮助大家培养在方案选型时的意识、思维以及做各种权衡的能力。
四、微服务架构
关于微服务架构的取舍
在合适的项目,合适的团队,采用微服务架构收益会大于成本。微服务架构有很多吸引人的地方,但在拥抱微服务之前,也需要认清它所带来的挑战。需要避免为了“微服务”而“微服务”。微服务架构引入策略 – 对传统企业而言,开始时可以考虑引入部分合适的微服务架构原则对已有系统进行改造或新建微服务应用,逐步探索及积累微服务架构经验,而非全盘实施微服务架构。
五、团队协作
开发工具工程化
通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。程序员的战斗,往往不是一个人的战斗,我们如何在一个平台下高效的去重,进行代码review,对功能进行调整,debug,做到在统一的规划下步步为营,混乱的堆代码的过程中找到自己的记录。这一切都依赖于有效的工具。
六、B2C项目实战
项目实战
要想立足于互联网公司,且能在互联网浪潮中不被淹没,对于项目的开发实战演练是不必可少的技能,也是对自身能力的一个衡量,有多少的量对等于获得多少的回报。看似简单的一个项目需求图谱,其中的底层原理,实现原理又能知道多少?你搭建一个完整的B2C项目平台到底需要多少知识?这一切都是需要我们考量的。
看完我分享的这些学习路线你是否会觉得自己的技术有待加强,思维不应该只停留在表面呢。
当然我这里也为想提升自己技术的同学准备了一份架构进阶视频资料和上面的高清思维导图。
资料获取方式:私信回复【学习或者JVM】就可以啦,谢谢大家,欢迎大家关注转发,收藏。