阿里巴巴面试题目
- java事件机制包括哪三个部分?分别介绍。
事件源、事件、事件监听器
- 为什么要使用线程池?
- 单个任务处理的时间比较短
- 将需处理的任务的数量大
使用线程池的好处:
- 减少在创建和销毁线程上所花的时间以及系统资源的开销
- 如不使用线程池,有可能造成系统创建大量线程而导致消耗完系统内存以及”过度切换”。
线程池可以减少创建和销毁的开销,避免频繁切换线程,任务调度
使用线程池风险:
1.死锁
2.资源不足
3.并发错误
4.线程泄漏
5.请求过载
- 线程池有什么作用?
减少开销,频繁调度切换cpu资源,控制线程数量
线程泄露,并发,死锁,过载
4、说说几种常见的线程池及使用场景。
4zhong,固定线程,1,不固定,固定可执行延时任务,返回
5、线程池都有哪几种工作队列?
阻塞队列,分为array,linked,delay(延时),synchronous(保持1),PriorityBlockingQueue(一直加)
- 怎么理解无界队列和有界队列?
无界队列,可以插入。有界队列有固定长度
- 线程池中的几种重要的参数及流程说明。
最大最小线程数,线程超时时间
8、什么是反射机制?
在程序运行过程中,对于任意一个对象都能调用它的方法和属性;
这种动态获取的信息以及调用对象的方法的功能称为java语言的反射机制。
动态代理和AOP
- 说说反射机制的作用。
1、反编译:.class–>.java
2、通过反射机制访问java对象的属性,方法,构造方法等;
10、反射机制会不会有性能问题?
1.产生了Dynamic Resolve
无论是通过字符串获取Class、Method还是Field,都需要JVM的动态链接机 制动态的进行解析和匹配,势必造成性能开销。
2.安全性验证
每一次的反射调用都会造成Java安全机制进行额外的安全性验证,造成性能 开销。
3.影响运行时优化
优化:使用缓存,使用MethodHandle减少安全验证,使用Runtime创建的类
11、你怎么理解http协议?
Hyper text trasfer protocol
12、说说http协议的工作流程。
通过URI,Tcp/Ip,三次握手,四次挥手
13、http有哪些请求提交方式?
Get,post,put,delete,OPTIONS,head,TRACE,CONNECT
14、http中的200,302,403,404,500,503都代表什么状态?
200成功
302临时重定向
403、404客户端错误,访问的文件不存在
500,503 服务端错误
- http get和post有什么区别?
get主要是读取,post是为了修改。
参数大小限制,安全问题,幂等性
- 你怎么理解cookie和session,有哪些不同点?
生命周期,一个是本地,一个是会话,单点登录
17、什么是web缓存?有什么优点?
18、什么是https,说说https的工作原理?
1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。19、什么是http代理服务器,有什么用?
20、什么是虚拟主机及实现原理?
21、什么是Java虚拟机,为什么要使用?
22、说说Java虚拟机的生命周期及体系结构。
23、说一说Java内存区域。
24、什么是分布式系统?
25、分布式系统你会考虑哪些方面?
26、讲一讲TCP协议的三次握手和四次挥手流程。
27、为什么TCP建立连接协议是三次握手,而关闭连接却是四次握手呢?为什么不能用两次握手进行连接?
客户端发送SYN=1;seq=x;服务器确认并发送 ACK=1;ack=x+1;SYN=1;seq=y; 客户端收到之后再确认收到并发送给服务器 ACK=1;ack=y+1;
客户端发送 FIN=x;服务器确认 ack=x+1; 服务器发送关闭连接 FIN=y; 客户端收到并回复 ACK=1;ack=y+1;
只有最后才有确认标志位
28、为什么TCP TIME_WAIT状态还需要等2MSL后才能返回到CLOSED状态?
29、什么是DoS、DDoS、DRDoS攻击?如何防御?
30、描述一下Java异常层次结构。
Error和exception ,error分virtualMachineError stackoverFlowError 和 outofmemoryError
Exception runtimeException IOException
- finally块一定会执行吗?
是的
- 正常情况下,当在try块或catch块中遇到return语句时,finally语句块在方法返回之前还是之后被执行?
之后
34、try、catch、finally语句块的执行顺序。
35、Java虚拟机中,数据类型可以分为哪几类?
数据类型(基本数据类型)和引用类型
基本数据类型,byte,char,int,short,long,double,float,double,boolean
- 怎么理解栈、堆?堆中存什么?栈中存什么?
栈是运行时的单位,而堆是存储的单位。
栈存储的是局部变量,对象的引用、栈帧
堆:对象和数据
方法区:常量、类
37、为什么要把堆和栈区分出来呢?栈中不是也可以存储数据吗?
38、在Java中,什么是栈的起始点,同是也是程序的起始点?
main
- 为什么不把基本类型放堆中呢?
因为基本类型大小可控,占得空间很小
- Java中的参数传递时传值呢?还是传引用?
值引用
- Java中有没有指针的概念?
没有
- Java中,栈的大小通过什么参数来设置?
Xss 256k
- 一个空Object对象的占多大空间?
64 24个字节。8个引用,16个堆内存 32 20个。
- 对象引用类型分为哪几类?
强、弱、软、虚
- 讲一讲垃圾回收算法。
标记整理、标记清除、复制回收算法
垃圾回收器 串行回收,并行回收
响应时间优先: prenew
吞吐量优先: parallel old parallel scavenge
Cms是标记清除
年轻代回收:复制
老年代:标记整理
46、如何解决内存碎片的问题?
47、如何解决同时存在的对象创建和对象回收问题?
,有了并发垃圾回收算法,prenew?
48、讲一讲内存分代及生命周期。
49、什么情况下触发垃圾回收?
50、如何选择合适的垃圾收集算法?
51、JVM中最大堆大小有没有限制?
52、堆大小通过什么参数设置?
53、JVM有哪三种垃圾回收器?
54、吞吐量优先选择什么垃圾回收器?响应时间优先呢?
ParallelScavenge 吞吐量优先
prenew响应时间优先
- 如何进行JVM调优?有哪些方法?
- 启动配置
- 回收器选择
- 显示回收
56、如何理解内存泄漏问题?有哪些情况会导致内存泄露?如何解决?
堆内存溢出。就是对象没有回收
- 从分布式系统部署角度考虑,分哪几层?
服务、服务的发布和订阅、缓存、数据库、代理,负载均衡、路由
58、如何解决业务层的数据访问问题?
59、为了解决数据库服务器的负担,如何做数据库的分布?
60、什么是著名的拜占庭将军问题?
61、为什么说TCP/IP协议是不可靠的?
62、讲讲CAP理念。
Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得 [1] 。
BASE就是为了解决关系数据库强一致性引起的问题而引起的可用性降低而提出的解决方案。
BASE是下面三个术语的缩写:
基本可用(Basically Available)
软状态(Soft state)
最终一致(Eventually consistent
63、怎么理解强一致性、单调一致性和最终一致性?
64、分布式系统设计你会考虑哪些策略?
65、最常见的数据分布方式是什么?
哈希
按数据范围分布
按数据量分布
一致性哈希
一致性哈希的基本方式是使用一个哈希函数计算数据或数据特征的哈希值,令该哈希函数的输出值域为一个封闭的环,即哈希函数输出的最大值是最小值的前序。将节点随机分布到这个环上,每节点负责处理从自己开始顺时针至下一个节点的全部哈希值域上的数据
- 谈一谈一致性哈希算法。
Murmurhash
67、paxos是什么?
68、什么是Lease机制?
69、如何理解选主算法?
70、OSI有哪七层模型?TCP/IP是哪四层模型。
OSI 七层模型:应用层、表达层、会话层、传输层、网络层、数据链路层、物理层
tcp/ip 应用层、传输层、网络层、数据链路层
Tcp 传输控制协议transfer control protocol udp user datagram protocol 用户数据报文协议
区别:tcp 连接,可靠、稳定、不安全,容易被攻击
三次握手、四次挥手
握手是发送一个ack ,syn,服务器返回一个ACK确认并发送一次连接syn,客户端接收到之后,发送ack确认收到,通知服务器建立连接
四次挥手是分开的
Ip
71、OOD/OOP,设计的五大原则
OOD:面向对象设计 object-oriented design
OOP:面向对象编程 object-oriented programming
设计的五大原则:1、单一职责原则2、里氏替换原则3、开闭原则4、依赖倒置原则5、接口隔离原则