前言前端
关注过的朋友都知道我更新不少面试经历 这些经历都是粉丝的投稿java
今天整理了一篇Java 程序员面试大厂的技术标准mysql
BATJava 程序员的技术标准linux
阿里巴巴篇nginx
扎实的计算机专业基础,包括算法和数据结构,操做系统,计算机网络,计算机体系结构,数据库等程序员
具备扎实的Java编程基础,理解IO、多线程等基础框架web
熟练使用Linux系统的经常使用命令及shell有必定了解面试
精通多线程编程,熟悉分布式,缓存,消息队列等机制;熟悉JVM,包括内存模型、类加载机制以及性能优化redis
精通spring mvc、orm框架(ibatis或hibernate)、模板引擎(velocity)、关系型数据库设计及SQL算法
具有良好的面向对象编程经验,深刻理解OO、AOP思想,具备很强的分析设计能力,熟悉经常使用设计模式
有大型分布式、高并发、高负载、高可用性系统设计和稳定性经验
熟悉面向对象设计开发,熟悉各类经常使用设计模式,并有在具体的应用场景落地经验
熟悉Spring、iBatis,等开源框架及消息,存储等经常使用中间件。 有通读过开源框架源码
熟悉基于Oracle或者Mysql的设计和开发、Linux操做系统
熟悉SOA,有平台化实施经验者,有大数据量、高并发系统和大型网站构建经验
分布式系统应用架构设计与研发经验,精通Java EE、SOA、OSGI等相关技术
对各类开源的框架如Spring、Hibernate等有深刻的了解,对框架自己有过开发或重构者可优先考虑
具备大型电子商务网站、O2O行业、C端产品系统架构设计经验
百度篇
熟悉常见设计模式,掌握java流行的开源框架SpringMVC/Spring Boot/Spring Cloud,熟练使用至少一种 ORM 框架
熟练掌握基本的数据结构和算法,有系统分析和设计的实践经验
熟悉Rest,HTTP,Socket、webservice、HTTP协议,具有并发、多线程的编程经验
对Mysql、Redis、MongoDB 等数据库有研究或者项目经验
具备大型互联网服务设计及开发经验
熟悉JVM,对JVM有必定理解,并能借助相关工具进行JVM性能调优
熟悉常见的开源分布式中间件、缓存、消息队列等,熟悉nginx,MySQL,Redis,mongodb 等经常使用的开源软件
熟悉 MySQL 数据库设计和优化,有 NoSQL 数据库使用经验
具备大数据存储或者高性能计算平台架构、设计及开发等方面经历
具备大型互联网服务设计及开发经验
腾讯篇
精通Web后台开发语言至少一种(PHP、Java、.Net、C++),有必定的架构能力和良好代码规范
熟悉linux/unix系统与开发环境
熟悉TCP/IP协议,socket编程
熟悉mysql以及SQL语言
有高性能大容量服务系统设计开发经验
精通面向对象设计,精通J2EE开发,java web开发
全面而且扎实的软件知识结构(操做系统、软件工程、设计模式、数据结构、数据库系统、网络安全);
具有良好的分析解决问题能力,能独立承担任务和有系统进度把控能力
精通MySQL或Mongo DB,熟悉缓存技术memcached、redis
有大型分布式、高并发、高负载、高可用系统设计、开发和调优经验
B/S结构系统分析及设计经验,有构建可伸缩、可扩展、高可用系统经验
有良好的开发习惯,熟悉Maven, Jenkins, JUnit等工具
精通MVC/REST架构、模板引擎、中间件的原理与应用
熟悉MySQL数据库,了解MySQL索引优化、查询优化和存储优化
BATJ技术专家,他们的技术能力都须要达到什么程度?
一般都是百度、阿里巴巴、腾讯、,那BAT的技术专家至关因而腾讯T4技术专家、阿里P8高级技术专家级别,是一线Team leader或者二级域架构师,须要对一个领域的业务很是熟悉而且可以将影响力辐射到其余合做团队。
通常来讲一些业务架构、应用架构、产品功能决策、技术选型、协做分工等问题应该在技术专家层次终结,技术专家是一线做战的小队长,向下提供决策,向上提供有效的信息。
BAT是国内技术大厂,因此能够参考BAT的标准,而对技术专家的要求是什么呢,如下4个小结能够做为参考。
1.代码能力
代码能力是基本功,Java语言自己,包括语言的各个方面包括对并发的理解,对内存使用对理解,对Java运维的理解等等,语言自己外,社区里经常使用的框架是否能够十分清晰的了解,包括spring,包括他实现的ioc,aop,orm,web机制是否有清楚的认识,有丰富的经验等等。
2.对经常使用中间件的理解
毕竟在一个大系统中,各类中间件是是否常见的,缓存中间件,消息中间件,例如 redis、memcache、rmq这些,要理解经常使用中间件使用场景,使用姿式(例如redis的经常使用命令),甚至包括他的一些运维,一旦出了问题,除了专门的运维人员,也须要你参与问题的排查,由于有时候这些中间件出现问题,是不当的使用姿式引发的。
3.架构、业务落地能力
前面提到了语言自己,各类中间件,若是你有很好的业务抽象能力和架构思惟,就能够把一款部门内部产品很好的设计并实施了,这点蛮难的,想必都有过接手现有项目的经历吧,有时候真巴不得把以前的设计者拿出来批斗,做为一个设计者,你可否作到当下一个接手它的人会说一句,这个系统设计的真好,稳定又可拓展,理解起来也很容易。
4.沟通协做
毕竟一个部门内部产品,是不可能由一我的完成的,因此须要沟通协做,把设计好的方案,要和2-3个小伙伴一块儿实施,包括一样身份的后端人员,前端人员,产品等角色,这个级别的人可能会参与带2-3我的,例如应届毕业等,因此你本身对知识的把握,分享精神,leadership都是很好的加分项。
福利
针对技术这一块,我本身除了整理了一份架构图谱,还找朋友录了一些视频,和本身收集了一些视频,讲解的都是一线大牛,里面包括了一些Java分布式、微服务架构、源码分析、性能优化、并发编程等技术视频,这段时间面试跳槽的朋友比较多,还有一套BATJ面试题合集,都已经整理好了
部分面试资料
部分视频资料
加群:1017599436管理员处可免费获取文末福利资料