沉淀、只为蓄势待发@Java后端求职面经

总结

06.20我从北京xxxx有限公司离职,结束了一年的见习生涯。07.05-08.04在帮我姐夫做翻译;毕竟这段时间比较空闲,在空闲的时候我都是在准备面试,不管是Java基础、JVM、数据库、数据结构、分布式、集群还是项目都准备的差不多,期间我看过《数据结构与算法分析》和《Java编程思想》等书籍。08.03我回到深圳,08.04开始的阿里一面到08.22的四面,今天得知四面挂了感觉很可惜,毕竟差Offer仅一步之遥,但又在意料之中;你选择公司,公司同样也选择你,如果你没有足够优秀,那么对不起-你只是一个过客,而我就是那么一个过客而已。我也留了退路,毕竟阿里没有十足的把握;在这段时间我也去面过三家公司都是自身产品研发,很巧很幸运也都拿到了Offer;公司没有好坏之分,你选择公司的原因无非看在该公司是否能够给予我们期望的salary、行业的前景和对自身的成长空间,这些之中阿里无非是首选。从阿里的这趟面试经历中,给我最大的领悟就是:只有自己足够优秀,才有选择的余地。以下就是近期的所有面试分享以及面试所需知识点总结。下方有资料获取方式!

目录结构

  1. 面试必备知识点

  2. 阿里巴巴集团1-4面经分享

  3. xx科技股份有限公司面经

  4. xx文化传媒有限公司(360子公司)面经

  5. xx软件集团有限公司面经(太水了就没写)

面试必备知识点(数据库、Java基础、项目、网络、数据结构、spring框架)

一、数据库部分

  1. MySQL数据库的事务(基本要求、并发事务的问题、4个事务等级)

基本要求:ACID,原子性、一致性、隔离性、持久性;并发事务问题:脏读、不可重读、幻读;4个事务隔离等级:读未提交、读已提交、可重读、串行化

  1. 索引(应用场景:状态比较多的字段,一般唯一的、底层:hash和B+索引算法、好处:应用数据结构进行查找)

  2. 使用复合索引的注意点

  3. 复杂查询(leftjoin、rightjoin、innerjoin、having、order by、limit、distinct等)

  4. explain关键词优化表

  5. MySQL的存储引擎InnoDB、MyISAM的区别以及如何选型

  6. MySQL的意向锁(MySQL系统默认,人为无法使用)、乐观锁(一般用一个字段version)、悲观锁(for update)

  7. Sharding-JDBC中间件(实现分表操作)

  8. 读写分离之主从复制如何实现

  9. 优化MySQL的方式(数据库设计方面:合理的索引、尽量使用数值型代替字符型(依赖MySQL底层查询机制)、使用定长字段而非定长;数据库语句优化方面:尽量使用exit和in、not in和in,like的用法要使用好,比如用 like ‘xxx%‘代替’%xxx%’,因为’%xxx%'这种方式可能不会走索引)

a:messages<500w     做数据库语句优化、表设计优化就可以应付

b:500w<messages<600w  在以上优化上+读写分离+redis缓存(500-600左右

又是一个瓶颈)

c:1200w<messages<1500w  分表,可以使用Sharding-JDBC,主从复制同时应

用消息队列缓解写入压力。(1200-1500左右又是一个瓶颈)

d:再多就要分库分表了。

image

二、Java基础部分

  1. Java最新版本,及其新增的特性

  2. 集合框架(list、set、map、源码分析及其底层原理、有序集合有哪些[怎么实现的])

  3. 集合去重(可依赖set的特性)

  4. ConCurrentHashMap的源码(分段锁,clear()、iterater()、get()弱一致性)

  5. ConCurrentHashMap与HashTable如何选择

  6. 同步锁(synchronized、reentrantLock-lock[ConCurrentHashMap的分段锁机制,jdk1.8之前]、CAS[ConCurrentHashMap的锁机制-synchronized+CAS,jdk1.7之后])

  7. 线程池(核心ThreadPoolExecutor类的参数:corePoolSize、maxmumPoolSize、keepAliveTime(这个参数allowCoreThreadTimeOut要为true才可以设置空闲线程等待时间,默认为false,需要指定)、timeutil、workQueue[BlockingQueue、]、threadFactiry、handler)

作用:能够限定最大的线程数,避免过多的线程上线文切换而导致系统运行缓慢,减少

线程创建与销毁的开销;减少GC次数

  1. 自动装箱与自动拆箱

  2. 异常(运行时、非运行时;以及他们的区别)

  3. 反射

  4. IO(字符流Writer、Reader、字节流InputStream、OutPutStream)

  5. JMM原理(可见性[一致性]、有序性、原子性、happen_before原则)

  6. volitale是什么(可以保证一致性,不能保证原子性)

  7. Transient关键词

  8. Happen-Before原则

  9. ThreadLocal(线程本地标量表,线程私有;内部是用ThreadLocalMap来存储相关信息,key为当前线程,value为Object)

  10. JVM内存划分及其内存分配、回收算法、怎么判断是否要回收某一对象[引用计数法、可达性分析算法]、分代对象比例(Eden:servivor0:servivor1=8:1:1)、老年代与年轻代的对象比例(2:1)、调优参数[Xmx、Xms、Xmn、PermSize、MaxPermSIze…]

  11. 引用的类别(强引用、软引用、弱引用、虚引用)

  12. 引用的种类与垃圾回收的关系

  13. 类加载机制(加载、验证[验证class字节码的准确性]、准备[为类分配存储空间、将类信息分配在方法区、在堆中新建java.lang.Class对象]、初始化[为变量初始化]、解析[将符号引用转为直接引用]、使用、销毁[即为回收])

  14. 泛型、泛型类型擦除

  15. 菱形运算符

  16. JIT逃逸分析(同步省略、堆内存转为栈内存、标量替换)

  17. 常用的设计模式(概念:经过无数的实践,可以反复使用,可以解决特定问题的设计方法;工厂设计模式、单例模式、代理模式、包装模式)

  18. 代理模式(jdk动态代理、cglib动态代理)

  19. JDK常用的设计模式(结构型模式、创建模式、行为模式)

  20. AQS(AbstractQueuedSynchronizer),AQS是一个用来构建锁和同步器的框架,使用AQS  能简单且高效地构造出应用广泛的大量的同步器,比如ReentrantLock、FutureTask、ReentrantReadWriteLock等等皆是基于AQS。

  21. B_IO N_IO A_IO的区别,以及底层怎么实现的

  22. JVM查看各个内存区域的分配(jmap…)

image

三、分布式部分

  1. 分布式锁的实现(基于数据库的排它锁、基于数据库建一张表作为锁表、基于redis缓存、基于zookeeper)

  2. 秒杀系统的实现(高并发、读多写少、资源竞争等场景;采用负载均衡、redis缓存、锁等解决方案)

  3. CAP理论(consistency、available、partition tolerance[分区容错])三者不可兼得,一般舍弃一致性,通过相关技术保证一致性。

  4. 分布式缓存(redis、memcached,两者如何选型,两者优缺点)

  5. dubbo(概念、原理、优点、缺点)

概念:是阿里的一个开源分布式RPC和微服务框架,基于Java的interface作为服务的契

约,通过注册中心完成服务的注册与发现,具体业务代码通过代理类屏蔽,致力

于提供透明化的RPC调用和SOA服务治理方案。

原理:提供者、消费者、注册中心、监控中心、容器

优点:服务自动发现、集群容错、错误重试、软负载、解耦等

缺点:单一的系统架构,使得在开发过程中,占用的资源越来越多,而且随着流量的增加越来越难以维护。

  1. redis(原理:支持存储的数据类型、支持事务、支持bgsave福全镜像持久化和aof增量持久化、单线程、数据淘汰策略[allKeys-lru、allKeys-random、volatile-lru、volatile-random、volatile-ttl、no-enviction]、回收算法[引用计数器、LRU算法])

  2. MQ(作用:限流、削峰、异步、解耦)

  3. tomcat原理(线程池、proxy[BIO、NIO、APR])

  4. Nginx的原理

  5. Zookeeper的原理

image

四、项目部分

  1. 项目背景,如:为什么要重构;项目处理方案

  2. 项目总体结构需要清楚,要有层次感,先讲系统架构然后各个模块的作用

  3. 项目的亮点要体现出来

  4. 各个模块需要清楚,包括功能、技术

  5. 核心技术点需要了解怎么处理的

  6. 根据场景设想面试官会问什么在项目没有的场景你是什么解决的

  7. 要到的分布式技术要知道原理,如:内部通讯、消息队列、分布式缓存(dubbo、mq、redis)

  8. 按事实回答,如果不是自己做的模块但自己知道,你就说有去了解过,然后开始巴拉巴拉

五、网络部分

  1. DNS

  2. cookie、session

  3. post、get请求的区别

  4. TCP与UDP的区别

  5. TCP三次握手过程

  6. 四次挥手

  7. socket

  8. HTTP与HTTPS的区别

  9. HTTP包含哪些信息

image

六、数据结构部分

  1. 树、二叉树、二叉搜索树、红黑树、AVL树、各大排序算法(注重快排和堆排)

七、框架部分

  1. IOC(工厂模式、单例模式、xml、dom4j xml解析器)

  2. AOP(JDK代理、cglib代理)

image

阿里巴巴集团(给自己打分-一面:90、二面:85、三面:90、四面:75)‍

一面(30分钟)

你最近在干吗?(********)、你能说下服装外贸的流程吗?、集合底层原理、介绍项目、介绍下buddo、如果我发了两笔相同的转账你是怎么处理的?(项目上,采用redis,开始巴拉巴拉)、redis挂了怎么办?(采取集群模式,能够持久化:命令行log和持久化到本地或者是远程服务器存储)、你能讲下对账吗?、你有什么要问我的吗?

二面(45分钟)

介绍一下自己、介绍一下项目、问了个交易场景是怎么处理的、你做过jvm的优化吗(答:没有,因为在项目上有专门的架构团队,他们负责这些工作,但我有简单了解过)?那你在项目上优化过什么没有?(答:将数据库数据放入缓存、因为这些数据是不常改的)你除了学习java还有学习其他语言吗?(答:有了解过python偶尔会去看一些视频,毕竟现在我还处在学习阶段,我觉得我现在应该先把java基础先打牢,然后再去把其他语言作为第二或者第三语言)、你看过redis、dubbo的源码吗?(答:没有,但我简单了解过;看源码就是看别人写的好的代码思想,因为看源码需要有足够的能力才有看得懂,我觉得java的基础得先掌握牢固,比如:设计模式啊、jdk源码啊等)你除了在项目上学的东西还有哪些途径获取知识(公众号、书)、你关注的公众号有哪些?(Hollis、Java后端技术、Java思维导图、Java技术栈、Java面试笔试)、在最近的一篇文章你学到了什么(JVM,开始巴拉巴拉)、你参加过世界知名的大赛吗?(如:ACM,答:我参加过蓝桥杯、创新大赛,ACM没能力去啊)、你的成绩怎样?(开始巴拉巴拉)

三面(49分钟,交叉面)

前戏:

**A:**你面的是ICBU(国际技术事业部)是吗?

**B:**是的,之前填的是这个部门

**A:**来我们部门(业务平台事业部)吧?现在阿里的重心在我们部门,ICBU的话不是公司的业务核心(面试官在憨笑)

**B:**可以啊,可以转部门吗?可以的话我就转过来(在憨笑)

**A:**可以转,不过一般是要在正式两年之后才可以

**A:**你之前面试过吗?你是第轮面试了啊?

**B:**这是第三面了

**A:**你现在人在哪里呢?

**B:**我现在在深圳这边

**A:**来杭州吧,深圳那边的话是一个研发基地,杭州是总部基本核心业务部门都在这里

**B:**可以的,听从安排,毕竟阿里牛人多,哪里需要去哪里(在笑着)

**A:**好吧,现在开始面试吧

面试:

**A:**自我介绍下…

**B:**巴拉巴拉

**A:**你做过哪些项目

**B:**开始叙述…(先讲做过的项目,然后挑一个熟悉的项目精讲:包括项目背景、项目系统架构、用到的技术、模块的各个功能)

**A:**为什么要用分布式?我单个应用集成也可以啊?

**B:**分布式系统的话有这些优点:qps、运行可靠性、可扩展性、可维护性、解耦等(还好多,多巴拉巴拉)

**A:**那分布式的数据一致性问题怎么解决?

**B:**在我们项目的话,内部通讯主要采用的是MQ,MQ在一定程度上市可以保证数据的一致性的

**A:**MQ如何保证一致性的?

**B:**比如A模块发了一个消息到Topic1,B模块监听Topic1;如果B获取了消息就会往下执行,如果没有获取则消息还在

**A:**如果此时我B系统奔溃了怎么办?这个怎么处理?(这个问题主要问的是分布式、集群的特点了)

**B:**因为分布式系统在集群模式下,每一个服务实例都有运行数据的拷贝;比如B奔溃了导致线程中断,因为分布式有容灾的特性在每个B系统的集群实例都有相关数据的备份,即使B挂了也没事,还有B1、B2、B3…

**A:**xxxxx模块是干什么的?

**B:**巴拉巴拉

**A:**为什么网关要用restful接口方式?

**B:**为了兼容之前的系统,客户化的时候去掉了网关模块;现在统一采用的是dubbo接口,因为dubbo也有错误重试、软负载、服务自动发现等优点(建议在回答的时候尽量要回答为什么,自己主动说而不是别人问)

**A:**缓存你们一般用来干嘛?

**B:**在我们项目的话,主要用于两个方面;一是:基础配置数据,二是:异步缓存

**A:**基础配置数据的话是你们服务起来的时候一个一个启动吗?

**B:**是的,我们用的@PostConstruct注解,当服务一启动的时候就将数据库的配置加载到本地缓存;如果在应用程序中,某个请求拿不到缓存的话就去数据库查询(适当改编,因为之前是没有去数据库拿数据这一步,毕竟有可能缓存你拿不到消息)

**A:**项目问完了,现在问下java基础

**A:**StringBuffer、StringBuilder的区别

**B:**巴拉巴拉

**A:**ArrayList、LinkedList的区别以及使用场景

**B:**巴拉巴拉

**A:**泛型用过吗?

**B:**用过,比如List、Set、Map这些都有用到过泛型

**A:**泛型的优点是什么?

**B:**避免了CastClassException的异常;在没有泛型之前是用Object,但这有一个问题是会有类转换异常;泛型有类型擦除,在编译期间类型是不会保留的

**A:**再来讲讲集合吧,HashMap是线程安全的吗?

**B:**非线程安全,线程安全的有HashTable、ConCurrentHashMap

**A:**设计模式用过吗?

**B:**具体没用过,但了解过;比如IO的适配器模式和装饰器模式

**A:**使用单例模式的时候需要注意什么?

**B:**侧重讲双重校验锁(再巴拉巴拉其他的)

**A:**web开发了解吗?

**B:**了解过一些

**A:**问个简单的,post与get的区别?

**B:**巴拉巴拉

**A:**cookie与session的区别?

**B:**巴拉巴拉

**A:**好的差不了了解了,你还有什么想问的吗?

**B:**我问下的,阿里校招难吗?容不容易进啊?

**A:**挺难的,现在我们部门一个都还没过,一个Offer都还没发;我是社招进来的。你这边我觉得没什么问题

**B:**阿里对待校招生有怎样的培养计划?

**A:**进去之后都是有师兄带着的,也有全部的新人做一个项目…

**B:**转正难不难啊?

**A:**也不算难,转正的时候会参考以往的工作外加考核

**B:**好的,我差不多了解了

**A:**好的,谢谢,再见

**B:**谢谢啊,拜拜

四面(57分钟,交叉面;红色部分即回答有问题)

**A:**你觉得Java跟其他高级语言有什么区别?

**A:**Java的最新版本是什么?有哪些特性?(我只知道特性有stream流、lambda表达式;开始叙述lambda表达式怎么使用,stream流忘了,最新版不知道[想说java11,但不确定;查了下是java10])

A:StringBuffer、StringBuilder的区别

A:线程安全的概念

A:代理模式(jdk、cglib动态代理;区别、底层应用技术、应用场景)

A:异常分为哪些,运行时异常与非运行时异常的区别,自定义异常属于什么异常

A:final与finally的区别

**A:**B_IO、N_IO、A_IO的区别以及底层原理、底层分别有哪些类进行处理与实现(我:讲了三个的概念;面试官追问:底层实现是什么?各有什么类或方法进行处理?,我:…这个不清楚)

A:JMM

A:JVM

A:如果在代码中调用System.gc()会发生什么(我:会触发垃圾回收,可能会对线程不安全;可以在jdk中进行配置禁止在代码使用System.gc()即代码中写了System.gc()也无效因为System.gc()要JVM的配合)

A:如果一个应用隔三天就会发生OutOfMemory,这个问题你会怎么排查?(我:可以用jmap工具查看相关jvm的内存区域占用情况,其他不知道了)

A:数据库主从复制怎么实现,具体的配置(我:通过binlog实现主从复制,怎么配置不是很清楚,没有具体实现过)

A:MySQL怎么备份数据(mysqldump -h127.0.0.1 -uroot -ppass myweb > d:/backupfile.sql)(我:之前一般都用navicat工具备份的,我记得是用mysqlxxx命令备份的;哎,记错了、忘记了这一点,这么简单的都不会)

A:复合索引的问题

A:MySQL的存储引擎有哪些,他们有哪些区别以及使用场景(我:我知道有InnoDB,一般都是用这个存储引擎,从MySQL5.5.5开始默认也使用该引擎;该引擎支持事务、行级表等高级特性…;虽然是知道有其他的,记不起来了)

A:MySQL事务的四个特性

A:xxxxx项目分为哪几个模块?

A:适配器用来干嘛的?(面试官:没什么新颖的啊

image

编辑搜图

请点击输入图片描述

可能我表达的方式不对吧)

**A:**你们项目的幂等校验

A:我大概了解了;结果的话这个星期会出,你注意下手机或者邮件。先这样了,再见

A:谢谢,拜拜

…(还有其他的,记不起来了)

xx科技股份有限公司-150分钟

笔试(40分钟)

选择题-10分、应用题(string stringBuffer stringBuilder的区别、多线程的实现方式 举例线程不安全、JVM内存区域划分 并解释)-30分、算法题(两题;应用递归-20、应用二分查找-40)-60分(注:幸好算法题这两个都会,应用二分查找的其实题目是要求尽可能降低时间复杂度,我选择的二分算法,因为只有这个我才会)

技术(80分钟)

介绍下自己、你的职业规划、介绍项目、redis原理(巴拉巴拉单线程基于内存操作的key-value数据库;支持的数据类型、多种数据淘汰策略、回收算法)、redis多台实例怎么配置、dubbo原理、你用过哪些索引、讲讲socket(我就知道socket是基于传输层的,具体我没用过;在tomcat中到接收到一个请求的时候,会把socket请求放在accept队列,然后交给worker线程池处理,获取线程之后根据连接获取参数生成一个request转发至servlet容器)、http请求包含哪些信息(报文头-url http版本号 请求方式是post还是get等、报文体-内容)、你用过哪些线程池(我:没有用过,因为在项目中spring框架已经封装好了,但我了解过Excutor,ThreadPoolExcutor是线程池的核心类,有这些参数…)、你知道的常见设计模式(IOC的单例、工厂,AOP的动态代理 jdk和cglib,IO的适配器和装饰器模式,Object.clone()的原型模式、Integer Boolean Character的享元模式;面试官:那你知道解释器模式吗? 我:想了一会[忘了],这个忘了,因为23种有点多;format就是解释器模式[我怎么忘了呢,心累啊])、你知道哪些锁(开始巴拉巴拉Synchronized、ReentrantLock、CAS;看我回答到了底层,然后面试官就问:你看过源码是吗? 我:是的,jdk源码有些常用的看过)、数据库表级锁在MySQL5.6有吗?(5.6我不能很确认,因为我一般用的5.7;面试官:那5.7有表级锁吗? 我:有,比如事务隔离等级的串行化就是表级锁,表级锁锁粒度是最大的加锁快,但是性能最差,容易造成锁冲突)、你在项目上遇到过什么问题…(还好多问题记不到了)

HR(30分钟)

介绍下自己、你的职业规划、你为什么离开之前公司(之前的公司偏向于业务,与我的职业规划有冲突)、你对职业行业有什么选择、如果安排你做大数据可以吗?你之前公司的实习薪资是怎样的、你的期望薪资是多少?(我:*****,HR:我们这里给不了这么高,我:没事儿,我相信贵公司能够给一个合理的工资,HR:不过你比较特殊,实习经验丰富…)、你住的离这里远吗?(很近,在前海,才三公里)、面试结果下午给你答复…

xx文化传媒有限公司(360子公司)-210分钟‍

笔试

面试官说,直接来吧从第一题开始,指着题目说:你有什么想法…

  1. 题目大概意思:在一个已经排序好的数组,判定某个数组里面的两个数相加的和是否等于X返回boolean;方法参数数组A,数值X(然后我开始讲思路,面试官说:可以)

  2. 题目大概意思:求台阶的积水量(然后我开始巴拉巴拉,用这种算法可以,比如:…;面试官看了半天,最后微笑着说这种方法也行,就是代码实现起来有点复杂,不过方案可行)

  3. 题目大概意思:数据库有2000w条数据,内存为10G,最大应用内存为100M(类似于jvm内存);假设我需要更新某个字段的状态,如何保证这些数据都处理完?

:我觉得可以使用线程池,首先测试单个线程的暂用内存,然后新建一个 线程池在内存允许的情况下设置maximunPoolSize,在select的时候用Limit关键词;在保证内存不会超出的状态下可以尽可能地加快执行效率

面试官:那线程池的作用是什么?

** 我**:线程池就类似于一个池子,这可以在应用可以承载的前提下尽可能发挥CPU的优势,也不会因为过多的线程导致上下文的切换导致系统运行缓慢

面试官:你做过正则校验码?

:没做过,但简单了解过,之前项目有正则校验又去看过

面试官:最后这题有点难那就不为难你了

一面(python或go面试官)

  1. 介绍下自己

  2. 你知道http协议吗?

  3. http协议包含什么信息

  4. cookie与session的区别

  5. http是长连接还是短连接?

  6. 怎么可以让http可以像tcp一样实现长连接?

  7. tcp协议

  8. 我这边没问题,请稍等会

…(还好多,一下子面了四面太多了记不住)

二面(java面试官?)

  1. 介绍下自己

  2. 讲下项目

  3. xxxx模块是什么功能

  4. dubbo原理

  5. redis原理

  6. RocketMQ的原理你知道吗?(我:mq是消息队列,具有削峰、限流、异步、解耦等特点…具体怎么实现的不太了解)

  7. redis的RDB全镜像持久化底层是怎么做的

  8. MySQL的索引

  9. 索引的底层数据结构有哪些(B+、B-、Hash)

  10. B+与B-有什么区别(B+是各个节点都是有数据的,B-的话是将数据放在叶子节点上)

  11. 有两个已经排序好的数组A、B,找出他们的中位数(我:新建一个空数组C,大小为这两个数组的长度;先将数组A放在C中从0下标开始,外层循环B获取值赋给temp,再在C中通过二分查找插入temp值[O(log2n)]或者是一个一个遍历找到位置插入temp[O(n)]);最终从C中选算中位数即可。

  12. 你还有什么要问我吗?(还是老套路)

  13. 我这边没问题,你稍等会

......(还好多,一下子面了四面太多了记不住)

三面(C++面试官):

  1. 介绍下自己

  2. 你之前做的项目都是Java的吗?

  3. 你有了解过其他语言吗?

  4. 我们来一个非程序问题,你知道1000的阶乘有多少个0吗?(我:开始分析,巴拉巴拉利用5的倍数乘以2^n能得0的特性我们可以求出100的阶乘有多少个0,然后再乘以10,因为百位数我们可以不管…巴拉巴拉[面试官一旁也在帮我分析])

  5. 你简历的是java开发让你做python、go可以吗?(python的话今年来越来越火;python的话我也了解过一些,一般用于非服务器端的数据分析,如果python的话我愿意)

  6. 然后我们聊了C++与java的区别与特性包括优缺点

  7. 你还有什么要问我吗?(还是老套路)

  8. 我这边没问题,你稍等会

…(还好多,一下子面了四面太多了记不住)

HR面:

  1. 介绍下自己

  2. 你一直在北京吗?

  3. 为什么来深圳?

  4. 你是打算在深圳了吗?

  5. 你有去面其他的公司吗?(有:前几天拿了xx科技股份有限公司的Offer,现在还在阿里的三面)、阿里的三面什么时候?(我:就这个星期)

  6. 那意思是你下周才能确定来这里是吗?(我:是的,这周我还在等阿里的三面)

  7. 你面的那个公司给你多少(我:实习期间xxxx,转正后10k+)

  8. 你简历的是java开发让你做python、go可以吗?(python的话今年来越来越火;python的话我也了解过一些,一般用于非服务器端的数据分析,如果python的话我愿意来)

  9. 你还有什么要问我吗?(还是老套路)

  10. 好的现在也差不多了你也忙活一下午了,先就这样了

xx软件集团有限公司(90分钟)‍

面试太水了(开始就问我mvc,然后mybatis的动态SQL,这也太古老了吧),不说了。两面技术面,一面HR面。

针对上面的技术我特意整理了一下,如果想学习Java工程化、高性能及分布式、深入浅出。性能调优、Spring,MyBatis,Netty源码分析的朋友可以查看一下:

image

这些书籍都是非常不错的,

值得大家研读,

不知道怎么去学习,

也可结合思维导图找到学习的方向。

image

资料获取方式:关注公众号:“程序员白楠楠”获取上述资料

重要的事情说三遍,转发+转发+转发,一定要记得转发哦!!!

image

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值