Q1、什么是API网关?
其实就是负载均衡,只是叫法不一样。比如nginx、gravitee、kong。
nginx和gravitee、kong的区别:nginx不带管理后台,另外两个带。
Q2、什么是统一配置管理?
就是集群管理,只是叫法不一样。比如zookeeper、阿波罗。
zk和阿波罗的区别:zk不带管理后台,阿波罗带。
Q3、Docker是啥?和虚拟机的区别?
用于一台机器上多一个应用的环境隔离和资源隔离。比如一个项目交付,不用再配置接收方的环境,直接给个docker就好了
和虚拟器的区别:docker本身没有再安装操作系统,而虚拟机是有安装的。
书籍:Docker —— 从入门到实践
资料:什么是容器技术?(一)
Q4、为什么每个应用独立一个Tomcat?
如果一个Tomcat下有多个应用,比如A\B\C,这时A要更新,BC不用。那更新A时,就会停掉BC。所以一个应用部署一个tomcat的话,会让应用间独立,部署不相互影响。
Q4、Java RMI与RPC的区别?
RMI是面向对象的一种Java RPC实现。
参考:https://www.cnblogs.com/ygj0930/p/6542811.html
Q5、什么是缓存击穿?
缓存击穿一般发生在缓存应用重启,所有缓存被清空时,以及短时间内大量缓存失效时。大量的缓存不命中,使请求直击后端,造成服务提供者超负荷运行,引起服务不可用。
Q6、熔断器Hystrix是啥?原理?
分布式系统中经常会出现某个基础服务不可用造成整个系统不可用的情况, 这种现象被称为服务雪崩效应。 为了应对服务雪崩, 一种常见的做法是手动服务降级。 而Hystrix的出现,给我们可以自动服务降级。
针对造成服务雪崩的不同原因, 可以使用不同的应对策略:
- 流量控制
- 改进缓存模式
- 服务自动扩容
- 服务调用者降级服务
服务调用者降级服务 的措施包括:
- 资源隔离
- 对依赖服务进行分类
- 不可用服务的调用快速失败
资源隔离主要是对调用服务的线程池进行隔离.
我们根据具体业务,将依赖服务分为: 强依赖和若依赖. 强依赖服务不可用会导致当前业务中止,而弱依赖服务的不可用不会导致当前业务的中止.
不可用服务的调用快速失败一般通过 超时机制, 熔断器 和熔断后的降级方法来实现.
参考:防雪崩利器:熔断器 Hystrix 的原理与使用
Q7、什么是JWT?
JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案。
要实现跨域的话,将JWT信息放在http请求参数里面就可以了,比如放在header的Authorization中,或者直接放在body里面也可以。
参考:JSON Web Token 入门教程
Q8、异步Servlet?
允许将耗时的操作换到异步线程池(需要自己创建线程池)去做,而不是在主线程池。
参考:Servlet 3.0/3.1 中的异步处理
Q9、ThreadLocalRandom?
解决了Random类在多线程场景下,内部保存种子值的原子变量因为自旋而影响性能的问题。
参考:并发包中ThreadLocalRandom类原理剖析
Q10、什么是内存碎片?
内存碎片一般是由于空闲的连续空间比要申请的空间小,导致这些小内存块不能被利用。
参考:什么是内存碎片
Q11、Runnable、Callable、Future、CompletableFuture?
- Runnable无返回值
- Callable有指定的泛型返回值
- Future可以对执行进行取消、查看执行状态、以及阻塞的方式get返回值
CompletableFuture允许对返回值进行组合、筛选等,内部有很多支持lambda的方法。比如将两个异步执行结果组合,或者取最先返回的值。
参考:Future和CompletableFuture解析与使用
Q12、分布式系统的CAP理论
一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分隔容忍(Partition tolerance)这三项中的两项。
- 一致性(Consistency) (所有节点在同一时间具有相同的数据)
- 可用性(Availability) (保证每个请求不管成功或者失败都有响应)
分隔容忍(Partition tolerance) (系统中任意信息的丢失或失败不会影响系统的继续运作)
参考:分布式系统的CAP理论
参考:CAP理论以及服务注册与发现
Q13、部署Jenkins
参考:使用jenkins实现持续集成
Q14、网站流量中的PV、UV、IP具体是什么?
- PV,网站页面访问总量。比如一个用户,页面刷新一次,PV+1;访问同网站的其它页面,PV+1。
- UV,网站访问的唯一客户端数量,比如有PC端和移动端。在24小时内,同一个客户端访问这个网站N次,UV+1,PV+N。
- IP,网站访问的唯一IP数。比如一个客户端,他访问了N次,但是IP不变,那么IP+1,UV+1,PV+N;他换IP,且换客户端,访问了N次,那么IP+2,UV+2,PV+N。
Q15、服务器压测指标?
- 并发数
- RT,指一个请求发出后系统的响应时间(response time)
- QPS, 是指系统每秒处理的请求个数(query per second)
TPS,是指系统每秒处理的事务个数(transactions per second)
区别下 QPS 和 TPS(Transactions per Second),他俩很像但是不是一个东西。TPS 是指每秒处理的事务数,一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。举个例子比如某个接口里面有很多项操作,这时往往用 QPS 是不准确的,因为准确来说 QPS 针对的是 Query,是询问,如单独的数据库读甚至是写都可以叫一个询问,但当接口里有多个操作,本质上调用一次产生一次事务,同时里面有许多 Query。所以 QPS 往往会比 TPS 大些。如果针对应用来说我们调用一次内部逻辑又不可见不知道里面有多少操作,这时 TPS 和 QPS 常常区分不开的,建议用 TPS 来衡量好些。
Q16、=+和+=的区别
var a=1; a=+2;//2
var a=1; a+=2;//3
- =+是赋值,+可以忽略
- +=是两值相加
Q17、什么是游戏联运?
游戏联运全称是游戏联合运营。游戏联合运营顾名思义就是指网络游戏研发厂商,以合作分成的方式将产品嫁接到其他合作平台之上运营,即研发厂商提供游戏客户端、游戏更新包、充值系统、客服系统等必要资源,合作平台提供平台租用权、广告位等资源进行合作运营。
那么为什么要联合运营呢?
游戏市场竞争越来越激烈,将一款产品传达给目标消费者的成本越来越高而且还承担着很大的风险,于此同时,又有相当数量的网站拥有一定的忠实用户,并且没有很好的将用户基础转化成利润的办法,双方以游戏联合运营为合作基础,利益共享风险共担,从而实现双方利益的最大化。
对于游戏研发商方面,可以很好的控制游戏推广成本,获得理想的运营平台,不必单独培养自己的客户群体,风险最小化。对于合作平台来讲,网游在自己的平台上成功运营将获得更高的平台用户粘稠度,提高平台收益总值,提升平台实力等。双方互利互惠,达到共赢的目的。
Q18、Hybird是什么?
(混合模式移动应用)是指介于web-app、native-app这两者之间的app,兼具“Native App良好用户交互体验的优势”和“Web App跨平台开发的优势”。
简单讲,就是一个技术方案。
Web App、Hybrid App、Native APP对比
对比维度 | Web App(网页应用) | Hybrid App(混合应用) | Native App(原生应用) |
---|---|---|---|
开发成本 | 低 | 中 | 高 |
维护更新 | 简单 | 简单 | 复杂 |
体验 | 差 | 中 | 优 |
Store或market认可 | 不认可 | 认可 | 认可 |
安装 | 不需要 | 需要 | 需要 |
跨平台 | 优 | 优 | 差 |