其他互联网大厂面试题

​1:阿里巴巴Java面试题​

​2:阿里云Java面试题-实习生岗​

​3:腾讯Java面试题-高级​

​4:字节跳动Java面试题​

​5:字节跳动Java面试题-大数据方向​

​6:百度Java面试题​

​7:蚂蚁金服Java面试题-中级​

​8:蚂蚁金服Java面试题-高级​

​9:京东Java面试题-中级​

​10:拼多多Java面试题-电商部​

​11:商汤科技Java面试题​

​12:中软国际Java面试题-初级​

​13:唯品会Java面试题​

​14:携程Java面试题-高级​

​15:软通动力Java面试题​

常用的性能评价/测试指标

​1.相应时间​

提交请求和返回该请求的响应之间使用的时间,一般比较关注平均响应时间。

常用操作的响应时间列表:

操作

响应时间

打开一个网站

几秒

数据库查询一条记录

十几毫秒

机械磁盘一次寻址定位

4 毫秒

从机械磁盘顺序读取 1M 数据

2 毫秒

从 SSD 磁盘顺序读取 1M 数据

0.3 毫秒

从远程分布式换成 Redis 读取一个数据

0.5 毫秒

从内存读取 1M 数据

十几微妙

Java 程序本地方法调用

几微妙

网络传输 2Kb 数据

1 微妙

​2.并发数​

同一时刻,对服务器有实际交互的请求数。

和网站在线用户数的关联:1000 个同时在线用户数,可以估计并发数在 5%到 15%之间,

也就是同时并发数在 50~150 之间。

​3.吞吐量​

对单位时间内完成的工作量(请求)的量度。

​4.关系​

系统吞吐量和系统并发数以及响应时间的关系:

理解为高速公路的通行状况:

吞吐量是每天通过收费站的车辆数目(可以换算成收费站收取的高速费),并发数是高速公路上的正在行驶的车辆数目,响应时间是车速。

车辆很少时,车速很快。但是收到的高速费也相应较少;随着高速公路上车辆数目的增
多,车速略受影响,但是收到的高速费增加很快;

随着车辆的继续增加,车速变得越来越慢,高速公路越来越堵,收费不增反降;

如果车流量继续增加,超过某个极限后,任务偶然因素都会导致高速全部瘫痪,车走不动,当然后也收不着,而高速公路成了停车场(资源耗尽)。

常用的性能优化手段

​5.避免过早优化​

不应该把大量的时间耗费在小的性能改进上,过早考虑优化是所有噩梦的根源。

所以,我们应该编写清晰,直接,易读和易理解的代码,真正的优化应该留到以后,等到性能分析表明优化措施有巨大的收益时再进行。

但是过早优化,不表示我们应该编写已经知道的对性能不好的的代码结构。如《4、编写高效优雅 Java 程序》中的《15、当心字符串连接的性能》所说的部分。

​6.进行系统性能测试​

所有的性能调优,都有应该建立在性能测试的基础上,直觉很重要,但是要用数据说话,可以推测,但是要通过测试求证。

​7.寻找系统瓶颈,分而治之,逐步优化​

性能测试后,对整个请求经历的各个环节进行分析,排查出现性能瓶颈的地方,定位问题,分析影响性能的的主要因素是什么?内存、磁盘 IO、网络、CPU,还是代码问题?架构设计不足?或者确实是系统资源不足?

前端优化常用手段

​8.减少请求数​

合并 CSS,Js,图片

​9.使用客户端缓冲​

静态资源文件缓存在浏览器中,有关的属性 Cache-Control 和 Expires
如果文件发生了变化,需要更新,则通过改变文件名来解决。

​10.启用压缩​

减少网络传输量,但会给浏览器和服务器带来性能的压力,需要权衡使用。

​11.资源文件加载顺序​

css 放在页面最上面,js 放在最下面

​12.减少 Cookie 传输​

cookie 包含在每次的请求和响应中,因此哪些数据写入 cookie 需要慎重考虑

​13.给用户一个提示​

有时候在前端给用户一个提示,就能收到良好的效果。毕竟用户需要的是不要不理他。

​14.CDN 加速​

CDN,又称内容分发网络,本质仍然是一个缓存,而且是将数据缓存在用户最近的地方。

无法自行实现 CDN 的时候,可以考虑商用 CDN 服务。

​15.反向代理缓存​

将静态资源文件缓存在反向代理服务器上,一般是 Nginx。

​16.WEB 组件分离​

应用服务性能优化

​17.缓存​

​18.缓存的基本原理和本质​

​19.合理使用缓冲的准则​

​20.分布式缓存与一致性哈希​

异步

​21.同步和异步,阻塞和非阻塞​

​22.常见的异步手段​

​23.集群优势​

程序

​24.代码级别调优​

​25.并发编程调优​

​26.资源复用调优​

JVM调优

​27.与 JIT 编译器相关的优化​

​28.热点编译的概念​

​29.选择编译器类型​

​30.代码缓存相关​

​31.编译阈值​

​32.编译线程​

​33.方法内联​

​34.逃逸分析​