记录下目前的面试问题和面试过程
10.26 头条---效能开发工程师
1.算法题
给定数量的红包金额m,随机分发给n个人;每个红包最小为0.01,请输出相应的序列;
2.mysql主从原理;
3.redis的key有哪些类型?是否只有string?
4.nginx的正反向代理
5.mysql分表如何实现
6.锁的实现方式?synchronize的原理;
7.线程池的构建方法;
8.spring的核心?ioc是单例还是多例?
9.redis的存储类型有哪些?
在面试完成后,也尝试去汇总和归纳一些相关问题,算是一个基本的巩固吧。
答案:
1.红包金额随机拆分问题:
思路:1.边界条件校验和验证;
2.放大金额100倍,保证金额为正整数;
3.设置初始化金额和人数,for循环递减
一直for到n-1个人,保证每次的金额为1+剩余金额*random();
4.最后一个人的红包为总的--前面n-1个人的总和;
5.输出;
2.mysql主从原理;
其中,在mysql中,主从服务主要是保证主备服务器的数据一致性,在整个流程中,主服务器上执行过的ddl和dml语句都会记录下来,也就是binaryLog(执行的二进制文件),从服务器同时会监控主服务器的变化情况。此时存在两种策略:1 定时监控 2定量监控 ,从服务器获取到更新信息后,将binlog同步到从服务器的redolog,直接执行,从而保证主从服务数据一致。
3.redis的key有哪些类型?是否只有string?
redis能够支持的数据类型有五种,分别为:string/set/hashmap/sortset/list;key 的话,只支持string类型的数据结构;
4.nginx的正反向代理
nginx呢,在spring cloud中主要在网关层前置,分发控制前端或者是web端流量入口,作为统一的入口,担任着容量限流、服务降级以及路由转发等重要功能。其次便是正反向代理了。正向代理:代理服务器直接和web端相连,能够帮助web访问到它自身无法访问的目标服务,对于服务端而言是没办法准确知道请求方的ip;反向代理:代理服务器和服务端直接相连,作为一个整体,直接是代理服务器暴露给到客户端,客户端是无法知道相应具体的服务端ip的;
5.mysql分表如何实现
6.锁的实现方式?synchronize的原理;
7.线程池的构建方法;
8.spring的核心?ioc是单例还是多例?
核心两个:IOC和AOP。其中aop即为面向切面编程,主要应用场景为:日志维护、监控、鉴权等非业务性功能;ioc即为控制反转,最初也叫作好莱坞原则,即用来解决多个bean之间调用时的互相依赖问题。采用ioc的方法,提供调用方不会主动咨询调用方的状态,