必看:BAT架构师java面试经验总结

下面就简单说下自己的一些浅薄的经验吧,希望能为屏幕前的你提供一点的启发。文章会先将经常问到的问题一一列出来,等以后有时间了我会给出参考答案,当然其中一些答案只是小编现有技术上的一些个人想法,仅供参考,如果有什么不妥的地方还望指出。

简历篇

建议简历中按照图中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、分布式、高并发、性能调优等架构技术架构资料以及免费的解答

不懂的问题都可以在本群提出来,之后还会有职业生涯规划以及面试指导 

你可能感兴趣的:(必看:BAT架构师java面试经验总结)