下面就简单说下自己的一些浅薄的经验吧,希望能为屏幕前的你提供一点的启发。文章会先将经常问到的问题一一列出来,等以后有时间了我会给出参考答案,当然其中一些答案只是小编现有技术上的一些个人想法,仅供参考,如果有什么不妥的地方还望指出。
简历篇
建议简历中按照图中1的方式去写,让简历筛选者一眼就能看到你项目中的亮点(图中仅供参考)
面试篇
(1)从java基础说起
1.HashMap和HashTable两个类的底层实现,HashTable的get方法加锁了吗?为什么?两者异同点是什么?ConcurrentHashMap的底层实现,和HashTable相比,为什么性能更高。
2.ArrayList和LinkedList区别,实现方式
3.jvm是如何管理内存的?垃圾回收算法有哪些?垃圾回收器有哪些?如何使用?什么是垃圾?可达性算法和引用计数算法了解吗?什么是GCRoot?如果对象一直创建,直到发生fullgc,说一下这整个过程。minor gc和full gc都会造成stop the world吗?如何降低fullgc发生的次数?
4.说一下双亲委派机制,jvm为什么要使用双亲委派机制?类加载器可能被继承吗?可以出现违背双亲委派机制的情况吗?如果有,解释为什么要违背双亲委派机制?
(2)多线程问题
1.如何正确终止一个线程?
2.实际工作中是如何使用多线程的?用多线程方式去求一个数组的和。写一个生产者消费者模型
3.线程池用过吗?解释下线程池的重要参数,阻塞队列用过哪些?底层是怎么实现的?task不断的涌现,说一下线程池是如何消费任务的(什么时候创建线程,销毁线程)?
4.synchronized和lock的区别,使用时的注意点在哪?CyclicBarrier和CountDownLatch分别在什么情况下使用?多线程之间如何通信?
5.volitile的语义,jdk为我们提供了哪些基本数据类型的原子操作类?AtomicInteger是如何实现原子递增的?CAS有什么缺点?如何避免?
(3)框架篇
1.spring是如何管理bean的?spring管理的bean的生命周期是什么?spring如何解决循环依赖?
2.spring为我们提供了哪些注解用于AOP?他们的执行顺序如何?
3.spring的事务传播机制是什么?事务的隔离级别是什么?
4.你们的程序是如何处理异常的?
5.springmvc的执行过程,mybatis的执行过程
6.了解哪些springcloud组件?微服务和soa有什么区别?
(4)数据库篇
1.mysql中索引的算法有几种?什么情况下使用索引?如果有sql执行比较慢,该怎么解决?
2.mysql中的innodb和mysaim有什么区别?
事务、外键、hash结构索引的支持、全文索引的支持、锁的粒度、物理文件异同
3.事务的隔离级别,innodb是如何解决幻读的?mvvc(多版本事务控制)了解吗?
4.如何分库分表?
5.如何查看sql的执行计划,如果有sql没有走预期的索引怎么办?
(5)中间件篇
1、项目中如何使用redis的,redis支持哪几种数据类型?持久化机制有哪些?分别有什么用,什么异同点?aof文件会一直增大吗?redis如何做分布式锁的?redis支持事务吗,如果支持是怎么实现的?底层原理是什么?和传统数据库提供的事务有什么区别?
2、mongodb是怎么使用的?技术选型的时候为什么选择mongodb?mongodb是如何支持事务的,多文档事务是在什么版本开始支持的?
3、memcached如何使用,底层的内存管理是什么样子的?
4、rabbitmq、activemq、kafka有什么区别?怎么做技术选型?底层实现了什么协议?
5、zookeeper是什么?节点类型有哪几种?了解paxos协议吗?了解ZAB算法吗?zookeeper是如何保证事务的?用zookeeper如何实现分布式锁?
(6)linux篇
1、能进行shell编程吗?有没有过实际经验?
2、直接将文件B.TXT中的所有123替换成345
sed -i 's/123/456/g' B.TXT
3、写出命令。统计日志文件weblog.log中 今天14:00~15:00的记录条数(时间格式:2011-01-01—15:30:11)
sum14=`grep -c "2011-01-01-14" weblog.log`
sum15=`grep -c "2011-01-01-15" weblog.log`
echo $[$sum14+$sum15]
4、文件A.txt内容为"12:34:68",只输出A.txt中的"34"
awk -F ":" '{print $2}' A.txt
面试后
1、二面和三面之后,面试官一定会问,你还有什么要问我的吗?
这个时候请一定不要说“没有了”,如果你觉的面试的还可以的话,请务必问以下几个问题(1)如果我有幸进入项目组,我的任务是什么?会面临哪些技术难题?(2)部门效益怎么样?公司对部门看好吗?
希望可以给各位带来一些帮助,如果有什么不妥的地方尽管提出来就好,毕竟人无完人,祝大家都能找到自己心仪的offer。
最后给你们推荐一个群,如果你还想提升自己
欢迎加入Java技术交流群:659270626
群内提供免费的学习指导,提供Spring源码、MyBatis、Netty、Redis,Kafka、Mysql、Zookeeper、Tomcat、Docker、Dubbo、Nginx、分布式、高并发、性能调优等架构技术架构资料以及免费的解答
不懂的问题都可以在本群提出来,之后还会有职业生涯规划以及面试指导