滴滴后端研发一面
主要工作:基础架构(中台)
- 开始还是项目拷问(但是没有深入)
- 项目(学校的全校数据库是怎么交互的?)
- 外卖项目(缓存优化)
(验证码、先访问Redis,主从复制怎么实现的?)
- 做这些项目遇到的难点和收获
- 解决问题的思路
- RocketMQ用在项目什么地方?(做消息队列缓存一致性balalbala)
- RocketMQ(特性)(解耦、削峰)
RocketMQ:
- NameServer:整个MQ集群提供服务协调与治理,具体就是记录维护Topic、Broker的信息,及监控Broker的运行状态,Name Server是一个几乎无状态节点,可集群部署,节点之间无任何信息同步,相当于注册中心.
- Broker:消息服务器,作为server提供消息核心服务,每个Broker与Name Server集群中的所有节点建立长连接,定时注册Topic信息到所有Name Server;
- Producer:消息生产者,业务的发起方,负责生产消息传输给broker.
- Consumer:消息消费者,业务的处理方,负责从broker获取消息并进行业务逻辑处理
RabbitMQ:
- Exchange:交换机的作用就是根据路由规则,将消息转发到对应的队列上。.
- Broker:消息服务器,作为server提供消息核心服务
- Channel:信道是建立在真实的TCP连接内的虚拟连接.
- Routing key:生产者将消息发送到交换机时,会在消息头上携带一个 key,这个 key就是routing key,来指定这个消息的路由规则。
- Binding key:在绑定Exchange与Queue时,一般会指定一个binding key,生产者将消息发送给Exchange时,消息头上会携带一个routing key,当binding key与routing key相匹配时,消息将会被路由到对应的Queue中。
- final finally 修饰类、变量、方法区别?
- java 线程和进程区别?
- 线程池用在什么地方,核心参数(核心线程数、最大线程数、心跳时间。。。)
- 多线程的实现方式(继承Thread类、实现runnable等八股)
- redis数据结构
- 以上的数据结构用在什么地方
- 做http请求 post和get 的区别?和安全性
1.get是从服务器上获取数据,post是向服务器传送数据。
2.get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTPpost机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
3.对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。
4.get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。(这里有看到其他文章介绍get和post的传送数据大小跟各个浏览器、操作系统以及服务器的限制有关)
5.get安全性非常低,post安全性较高。
- Linux常用指令
- 获取进程号的命令grep
- 怎么通过进程号看端口号
- 两数之和(爱了爱了)
暂时记得这么多,一面感觉就是常规八股,期间面试官一直在很温柔的指引和提示,可能是因为有的工作需要用到python,而我正好有一份python的实习经历,所以抬了一手