你们好,我是鲁班学院的阿琰!我是有着三年工做经验的Java程序员。
目前一线城市的薪资水平在13到16K之间,可是找工做的时候并不只仅有工做经验就好了,还须要必定的专业知识。若是你野心更大,想要进阿里美团头条等等这些大厂的话,那就须要更多的专业知识。那么,一个三年工做经验的Java程序员应该要具有哪些知识呢?
我整理了以后发现,程序员须要懂好多的知识。java
这期视频共有十大类内容
项目经验
Java基础知识
集合框架
多线程
JVM相关问题程序员
框架相关问题
消息中间件
Redis
数据库
其余
HR面试面试
### 一,项目经验
项目经验是程序员们最重要的财富,也是面试中必问的问题。通常面试官都会借着项目经验来考查应聘者的沟通能力和思考能力。三年工做经验的程序员通常都会有两个以上的项目经验,但实际咱们大部分的状况都是作产品的一个功能或一个模块。 虽然咱们能很好的完成工做上的要求,可是对于面试这确定是不够的。对于面试来讲,咱们还要完成如下四点。算法
一、知道你的项目究竟是作什么的,有哪些功能。
二、知道你作的项目在整个项目中所处的位置及做用,并能清晰地阐述模块间的调用关系。
三、知道你项目的总体架构和使用到的中间件,并对中间件的原理有必定的了解。
四、能流畅地阐述本身在项目中解决过的比较复杂的问题。sql
项目经验在于一朝一夕的积累,须要你们平时对本身的项目多积累,并且不少人会对本身的项目经验不是颇有说服力而感到苦恼。 这里有个小技巧,即便工做中碰见的问题不是你本身解决的,但只要你能搞懂弄会,谁又会在面试中说这个不是你弄的呢?数据库
### 二,Java的基础知识。
技术知识这块面试仍是蛮常见的。不过大多问的比较简单。这是我罗列的一些我曾被问到的问题,你们私下参考一下。
一、栈和队列的区别
二、接口和抽象类的区别
三、Int和Integer的区别和自动拆箱/装箱的相关问题
四、常量池相关问题
五、==和equals的区别
六、重载和重写的区别
七、String和StringBuilder、StringBuffer的区别设计模式
### 三,集合框架。
集合框架的底层原理,是面试很常见的问题。不管去大公司面试,仍是去小公司面试都会问。只不过问深问浅的区别。
一、ArrayList,LinkedList,HashMap,LinkedHashMap,ConcurrentHashMap的底层实现原理
二、1.7版本和1.8版本的HashMap的区别
三、1.7版本和1.8版本的ConcurrentHashMap的区别
四、HashMap能不能排序?HashMap的长度为何要是2的幂次方?
不过无论怎么样,你们去面试的话,都要把上述的问题都尽可能弄懂。最低的要求就是把hashmap的底层原理弄懂。缓存
### 四,多线程。
一、建立线程的几种方式?Wait,sleep分别是谁的方法,区别?线程间的通讯方式?
二、介绍下什么是死锁,碰见过死锁吗?你是怎么排查的。(能够经过jps排查)
三、建立线程池的几种方式,线程池有什么好处。
四、线程继承和接口的区别,接口有什么好处。安全
五、Synchronized、Lock、ReentrantLock的区别,用法及原理。
六、CountDownLatch与CyclicBarrier用法
七、ThreadLocal的用法和原理
八、Volatile关键字的做用和原理session
九、乐观锁和悲观锁
十、对公平锁,非公平锁,可重入锁,自旋锁,读写锁的理解
十一、CAS是什么及底层原理
十二、ArrayBlockingQueue,LinkedBlockingQueue,SynchronousQueue等等堵塞队列的理解
1三、ThreadPoolExecutor的传入参数及内部工做原理
1四、给你一个具体的业务场景,让你使用ThreadPoolExecutor建立一个适合的线程池
1五、分布式环境下,怎么保证线程安全
多线程通常是高级程序员面试中的重点。如今的项目高并发不少,因此面试多线程这块仍是挺多的。通常大厂会问得很深。从第十点开始就蛮难的了,你们能够根据本身的状况酌情学习。
### 五,JVM相关问题
一、JVM内存机制
二、介绍下垃圾收集机制,垃圾收集有哪些算法,各自的特色
三、聊聊GC,谈谈Major GC,FullGe区别,垃圾收集器有哪些,他们的区别?
四、OutOfMemeryError这个错误你遇到过吗?你是怎么解决处理的?
五、JVM调优有哪些参数,介绍下,线上环境上,你是怎么查看JVM的参数并进行调优的?
六、能不能本身写一个类叫java.lang.String(类加载的过程,双亲委派模型)
JVM这块一直是高级程序员面试中的重点。想拿高薪这块必定得懂。并且不只懂,还要有必定的实战经验。
### 六,框架相关问题。
一、Spring用了哪些设计模式?Spring注入bean的方式?对SpringIOC和SpringAOP的理解?
二、Spring事务隔离级别和传播机制?
三、Mybatis的缓存机制(一级缓存和二级缓存),Mybatis的mapper文件中#和$的区别
四、SpringMVC的流程
五、Spring和SpringBoot的区别?
六、对SpringBoot的理解
七、RPC框架有哪些,他们的区别?
八、Dubbo的使用和理解
九、Spring Cloud的使用和组件,谈谈你的理解
框架这块一直都是面试的重点,不过根据个人经验,框架这里通常不会问的很深,不多碰到让你说源码,主要仍是考察你对框架的设计理解和框架的流程。
### 7、消息中间件,
一、大家公司是如何进行消息中间件的技术选型?
二、如何保证消息中间件的高可用?
三、如何保证消息中间件重复发送消息?
四、消息队列积压了大量的消息,你该怎么处理?
五、如何保证消费者消费消息是有顺序的?
六、让你来开发一个消息中间件,你会怎么架构?
消息中间件仍是蛮重要的,不管对面试仍是工做来讲都是重点。你们必定要对这块多研究,多了解。
### 八,Redis
一、大家公司为何要使用Redis?Redis有几种数据类型?
二、Redis持久化机制?Redis的过时策略?
三、怎么保证Redis的高可用?
四、什么是缓存穿透?如何避免?什么是缓存雪崩?如何避免?
五、如何保证缓存与数据库的双写一致性?
六、Redis单线程模型原理,为何能支撑高并发?
七、Redis哨兵架构的理解和底层原理
如今高并发场景愈来愈多,基本面试必问缓存,只是或深或浅而已。比较常问的就是1到5,六、7想挑战大厂的能够去研究。
### 九,数据库。
一、工做中你是怎么优化sql的?
二、什么状况下,索引会失效?
三、数据库的存储引擎,好比:MySQL的MyISAM和InnoDB区别?
四、索引的最左原则
五、索引的底层原理
六、大家公司是怎么进行分库分表?分库分表的方案
数据库的优化通常都会问,涉及索引的地方会问的多些,还会问到难度比较高的用库分表,这里网上都有方案,通常都是主从库或Mycat,你们能够去学习了解一下。
### 十,其余
一、分布式事务是怎么解决的?
二、分布式session方案?
三、设计一个秒杀场景
四、怎么防止表单屡次提交
五、Linux的基本操做命令
六、ElasticSearch的使用和原理
七、Zookeep的使用和原理
这块主要是问你一些常见的业务场景,比较开放式,还会根据你本身的简从来问。好比你的简历项目里面有ElasticSearch,那么面试官就会问你这些中间件的使用和原理。若是你成功地经过了全部的技术面,那么恭喜你,你离收到offer无限接近了。
### 十一,HR面
若是你面试的是大公司,还有最后一个考验,hr面试。这轮面试必须重视起来,即便前面的面试对你的评价再高,不少公司的hr对于面试者都有一票否决权。不过通常hr问的也很少。
一、简历中写的过去工做经历的离职缘由
二、当前公司薪资待遇
三、指望能到怎样的一家公司
四、我的将来的发展方向
这里主要说下第二点,当前公司的薪资待遇是能够多报的,通常没什么公司会去审核。不过最好也别虚高的过度。指不定有些公司入职的时候会要求你提供最近一家单位的银行流水号,若是没有虚高的过度的话,你还能够用年终奖什么的来搪塞。若是太高解释不过去,那就很尴尬了。
好了,今天的分享就结束了,喜欢的朋友关注一下,点赞、投币、收藏一键三连~