支付宝三面&字节跳动一面

支付宝

支付宝是前天晚上9点半我在洗jio的时候电话打过来的,足以看出支付宝这边福报程度,P9大佬这个点还在加班,我吐。而且不预约是蚂蚁金服一贯的传统。这次面试应该也是过了,又面临着支付宝和阿里金融两难的选择境地。

1. 项目中为什么要用Nginx

用nginx做反向代理和负责均衡

2. Nginx为什么可以做负载均衡

一般来说公网延迟高,客户端与nginx之间的请求连接走公网,nginx先把这些请求缓存住,等这些请求数据全部完成之后nginx再向内网服务器请求,降低公网网络延迟成本,同时也降低一个连接占用服务端程序的时间。

因为tcp不一定一次就能把全部数据传输完毕,所以一个连接可能需要等待很久才能把所有需要的数据都传输完毕,而这样的空闲连接如果都直接连接到服务器上的话,会加重服务器负担,而nginx在这方面做了很大的优化,可以承载更多的连接,空闲连接也不会占据太多内存,所以nginx作为反向代理能降低上游服务器的负载。
Nginx提升网站性能的原因

Nginx比tomcat好在哪里?

主要有三个技术方面,master-worker进程模型,nio,协程机制

3. 正向代理和反向代理

正向代理隐藏真实客户端,反向代理隐藏真实服务端。

我们常说的反向代理其实也就是在tomcat后面做集群的时候,nginx隐藏了服务端的集群,这便是反向代理

而正向代理其实就是nginx向后台服务器隐藏了client端的browser,app,h5等等的请求,这便是正向代理

4. 两阶段提交

5. 4个任务,线程池参数为2,2,4,如何执行

字节跳动

字节这边效率挺高,hr声音挺好听(偏了)。整个面试过程大约1个小时,开放性的问题很多,面试官记录也比较认真。项目几乎没问,算法只有一个,也不是很难。不过字节确实很实诚,我问实习生有人带吗,那边说基本都是靠自己…

1. Java泛型原理

什么是类型爆炸

2. HashMap结构

为什么1.8才加了红黑树 这个我比较懵逼?

3. 怎么判断一个对象要被回收

引用计数法和可达性分析法

有没有用引用计数法的语言

Python和脚本领域,譬如ActionScript

4. 乐观锁和悲观锁

5. 读多写少的MySQL如何优化

优化索引,优化配置,换引擎为MyISAM,分库分表(hash,block,MyCat),加缓存

6. 如何分库分表

可以先垂直分表,如果表中有列是text类型,则尽量把它拆开,避免查询时,数据量太大造成的“跨页”问题

水平拆分,可以先hash或者range,或者地理区域,时间来划分

7. 分库分表后如何保证ID自增

通过专门的一个表来保证ID,通过Redis单线程来生成ID

通过触发器在业务层面上约束

  1. UUID:通过唯一识别码16个字节128位的长数字;组成部分:当前日期和时间序列+全局的唯一性网卡mac地;优点:代码实现简单、不占用宽带、数据迁移不受影响;缺点:无序、无法保证趋势递增(要求3)字符存储、传输、查询慢、不可读、可以逆向出mac地址不安全
  2. 雪花算法:表示符+时间戳+机器码+12位毫秒计数器;优点:自增,灵活度高;缺点:依赖机器的时钟,每个机器的时钟不可能完全同步
  3. 通过mysql的auto_increment的间隔
  4. 通过redis的步长来保证

8. 如何保证缓存一致性

双删+MQ

9. Nginx的作用

10. 如何在服务器部署服务

11. LeetCode2 两数相加

这个之前刷过,2分钟就写出来了

你可能感兴趣的:(Java,EE,Java,SE,采坑记录)