(一) Java 编程方面
1、 如何DUMP内存出来看看内存溢出呢
DUMP分为两种:
(a)内存dump是指通过jmap -dump <pid>输出的文件,
(b而线程dump是指通过jstack <pid>输出的信息。
两个dump可以单独使用,也可以在特定场合下结合使用。
2、现在我的端口8080被占用了,如何找出这个进程来用哪个命令;
参考:如何在Windows下查看JAVA端口占用情况(阿里面试)
3、查看进程的CPU使用率:
> jstat -gc 7964 5000
代表: 每隔5秒钟查看进程7964的内存使用情况;
(二) 基础知识方面
1、 JDK1.7 月JDK1.8的区别和联系:
参考:Jdk1.7 与 jdk1.8的区别,最新的特征有哪些(美团,360,京东面试题目)
2、Java 基础知识,Java堆内存结构, 新生代,老年代如何定义,划分,CMS,G1的算法是怎样的,性能瓶颈,调优。垃圾回收算法。
类加载技术,当类加载的时候,我想改一下值用Java探针技术,class类在加载的时候 Java探针技术,可以在加载class的时候改变 对象的值;
参考:G1 垃圾收集器入门
关于Java探针的可以参考:Java探针-Java Agent技术-阿里面试题
3、NIO 和IO 的含义,以及他们的三个区别
我以为NIO指的是 Non Block 但是面试官指的是New IO 和IO的区别,我傻眼了。
(a)这是No-Block IO 和IO 的区别和联系
(b)这是Java1.4之后出的New IO 与IO的区别和联系:
4、HashMap的Hashcode和equal 的区别
参考:Java == ,equals 和 hashcode 的区别和联系(阿里面试)
5、ThreadLocal 类掌握情况。存储在那里?当数值更新后,如何处理,让全局都更新呢
参考:ThreadLocal 定义,以及是否可能引起的内存泄露(用线程池有可能泄露)
8、读写锁,多个读锁互不影响,写写互斥,写锁优先于读锁:
读写锁特点:
a)多个读者可以同时进行读
b)写者必须互斥(只允许一个写者写,也不能读者写者同时进行)
c)写者优先于读者(一旦有写者,则后续读者必须等待,唤醒时优先考虑写者)
参考:Java 线程锁机制 -Synchronized Lock 互斥锁 读写锁
(三) 数据结构方面
1、 Synochronized 和 Voliate的区别, 涉及到的CAS处理
参考:JAVA多线程之volatile 与 synchronized 的比较-阿里面试题
2、concurrentHashMap 在1.7与1.8底下的区别,
JDK1.7版本的ReentrantLock+Segment+HashEntry,到JDK1.8版本中synchronized+CAS+HashEntry+红黑树,
参考:ConcurrentHashMap原理分析(1.7与1.8)
3、阿里的第二面是去阿里本部面试的环节对数据结构要求很高,
我曾问过阿里面试人员需要了解哪些数据结构知识才能面试通过,
阿里面试官答道:只要把HashMap,HashTable,HashSet,CurrentHashMap的原理搞清楚了,数据结构面试一定没问题。所以,弟兄们,想进阿里
一定要把这几个数据结构搞清楚。
参考:Hashtable数据存储结构-遍历规则,Hash类型的复杂度为啥都是O(1)
HashMap,HashSet,Hashtable 的复杂度是O(1),
TreeMap,TreeSet内部排序了使用了红黑树,因此时间复杂度是O(log(n))
参考:HashMap, HashTable,HashSet,TreeMap 的时间复杂度
红黑树,因为只搜索一边,因此复杂度连O(n)都到不了,只要log(n) 就够了。
时间复杂度;如何计算的,好好看看
HashMap,HashTable ,CurrentHashMap的区别
HashTable不允许有空值,HashMap 的key和value允许有空值,因此不能用HashMap的get()方法判断是否有指定的值,应该用containsKey();
参考:hashmap,hashTable concurrentHashMap 是否为线程安全,区别,如何实现的
4、TreeMap 内部如何实现排序的,比如现在已经有一个treeMap对象了,很多数据,现在我要添加一个数据map.put(a,b),TreeMap是如何快速寻找到 a对象的位置的?
(四) 多线程方面
1、ReentrantLock 可重入锁,指的是什么可重入(举个例子,这个一定要重视,两个阿里的面试官都问到了)。如何理解,公平锁,非公平锁。
可重入指的是:线程第一次进入加锁了之后,以后就不需要获取锁了,:
公平锁参考:分析ReentrantLock的实现原理
可重入锁,synchroized 和 ReentrantLock都是可重入锁,就是AQS的state设置为1,2.。之类的,只要不是state=0,(0代表了释放锁)其他的锁都一直等待,
要不然就成了死锁了,这里有个很形象的说明,
请参考:轻松学习java可重入锁(ReentrantLock)的实现原理
参考: java并发锁ReentrantLock源码分析一 可重入支持中断锁的实现原理
用Synchronized实现ReentrantLock:
参考:使用synchronized实现一个Lock-美团面试题目
2、如何实现多线程,Java线程池,如果使用 newFixedPool(20)如果 目前有30个进程过来,他是如何排队实现一个个执行的。哪来的队列;
3、Sleep 和Wait的区别 ,他们的CPU有没有释放内存
参考:sleep、yield、wait、join的区别(阿里面试)
4、start,run的区别;
参考:多线程-Thread的run()与start()的区别
(五) Spring方面
1、Spring Boot 是否用过,
Spring Cloud 多看看,了解太少,不光是可以转变成 RPC,框架,还可以整体提高延迟多少秒,寻找最近的路由规则,
2、Spring 加载流程,Spring的框架知识包括IOC,AOP ,事务处理
(六) 部署 网络架构搭建方面
1、Docker:是一个容器;
2、RPC有没有用过相应的框架,比如google的JRPC,Docker不是RPC,它只是个容器,(这个问题,360,美团,阿里,京东都问过);
(a)RPC用什么协议通讯的
3、分布式部署,分布式事务。是否理解,是否用过,3次阿里的面试均提到这个问题,一定要了解;
4、大型web服务器架构如何设计
(a) 比如数据库设计,读写分离==》一个Master主数据库负责读写,多个Slave从数据库读,使用BinLog实时同步从数据库,不能乱了
5、Flame, ETL (数据仓库技术) 好好看看 这个,技术
ETL技术参考:ETL工具之Kettle的简单使用一(不同数据库之间的数据抽取-转换-加载)
参考:ETL技术( Extract-Transform-Load) 数据仓库技术-比如kettle
6、zookeeper是如何注册服务,并负载均衡的
参考:zookeeper如何实现负载均衡的?(具体连接哪一个zookeeper服务器的选择?)阿里面试
7、Tomcat,Jboss的类加载顺序
(七) 数据库方面
(1)数据库隔离级别与脏读,可重复读。幻读的区别
总结: 5个隔离级别 与脏读,不可重复读,幻读的关系:
ISOLATION_DEFAULT | 使用后端数据库默认的隔离级别 |
ISOLATION_READ_UNCOMMITTED | 最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读、幻读或不可重复读 |
ISOLATION_READ_COMMITTED |
允许读取并发事务已经提交的数据,可以阻止脏读,但是幻读或不可重复读仍有可能发生 Oracle和SQL Server 默认 都是 READ_COMMITTED |
ISOLATION_REPEATABLE_READ |
对同一字段的多次读取结果都是一致的,除非数据是被本身事务自己所修改,可以阻止脏读和不可重复读,但幻读仍有可能发生 Mysql 默认就是REPEATABLE READ |
ISOLATION_SERIALIZABLE | 最高的隔离级别,完全服从ACID的隔离级别,确保阻止脏读、不可重复读以及幻读,也是最慢的事务隔离级别,因为它通常是通过完全锁定事务相关的数据库表来实现的 |
(2)如果必须要保证一致的话,不能进行读写分离了,可以进行业务拆分,把这部分业务单独拿出来 可以采用多库不区分读写以及memcache缓存技术来实现。
3、redis memechen 的区别和联系。
(八) 协议通讯方面
(1) TCP,UDP的区别,3次握手 4次挥手的流程
参考:TCP协议详解7层和4层解析(美团面试,阿里面试) 尤其是三次握手,四次挥手 具体发送的报文和状态都要掌握
九、Maven方面
如何处理包名冲突,比如A引用了log1.5,B 引用了log1.6,
maven的引用遵循:最短路径和最先引用规则,一般是找到低版本的那个,然后exclusions一下,不然没法用了,循环引用。
不明白的可以看看这个:
参考:Maven 3-Maven依赖版本冲突的分析及解决小结 (阿里,美团,京东面试)
编程题目;
现在有一张表有很多数据,但是列只有两列,姓名和身份证号,现在想用身份证号的出生年月进行排序,目前给出的CPU内存很小,如何做到最快排序。
参考:面试- 阿里-. 大数据题目- 给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?
(5)现有两张表 A,B 字段 只有两列,都是 姓名 和身份证号,如何快速的找出相同的记录;
十、搜索引擎框架:
solr 与 lucene;
参考:solr学习