前言
人人都想成为架构师,但往往只有10%的程序员能取得成功,想象很简单,但是坚持很难。
首先想给所有程序员一点建议:在日常工作中,万万不要仅局限于自己手头上的工作,因为自己负责的工作内容可能只是某系统上的“冰山一角”,这个系统是前辈们留下的财富,我们要学会怎么去利用它。这个时候,就需要我们站得高一些,看得远一点,去了解这个系统的整个经脉,揣测当初它设计的“Why?How?”,换做自己应该会怎么做,这样或许你将会离架构师更近一步。
快手一面
Java类加载的过程,分几步,(从.Class文件变成一个实际的对象需要哪些操作)
类初始化的过程
JVM分成哪几块,Java内存模型,运行时数据区有哪几部分
本地方法区里放的是什么
Mysql使用哪种搜索引擎,innodb有哪些特性
Innodb的索引用的是什么,b+树的特性是什么
聚集索引和非聚集索引在数据结构上有什么区别?
说一下hashmap,红黑树和平衡二叉树有什么区别,为什么不使用平衡二叉树?
Hashmap链表插入方式为什么是尾插?说说Concurrenthashmap,他是如何加锁,put和get有什么区别
Hashtable的底层是什么,为什么线程安全
Synchronized有几种用法?他锁的是什么?怎么加锁,如何使锁生效?Synchronized的底层是怎么做的?(面试官:锁的是对象,在对象的头里加了一个计数器,进行锁升级)
Volatile有原子性吗?
背一下网络模型,http在哪一层,tcp在哪一层,tcp有什么特性,怎么保证可靠性
Mysql事务隔离级别,有什么区别,什么是脏读幻读不可重复读
聊一聊redis,(我说了持久化方式)如果RDB和AOF同时开启,默认使用哪种方式恢复,为什么?
多线程用过吗?线程间通信方式?Wait,notify,sleep有什么区别?
写题:反转链表,
判断是否有环,
返回换环点(我说了个hashset的思路,面试官说有重复节点怎么办)
快手二面
项目:讲一讲token各部分放了什么,干嘛的?
讲讲百度api怎么用的?
Redis内存满了怎么办(redis内存淘汰机制)
Linux常用的指令?
在浏览器里输入url后会发生什么?
Java方面看过那些源码?线程池用过吗?有哪些参数?拒绝策略?