面试复盘 | pdd凉经

笔试 除最后一题感觉是纯数学题只能骗解,前面难度大概都是dp之类的。

一面 技术面

  • 自我介绍
  • 项目
  • 这边是做java的,你c++打算怎么转
  • 设计算法题
    Q: 服务A有几百台服务器,服务B有几百台服务器,每台服务器的可响应性和响应时间不同,能承载的访问数量也不同,问如何设计一个合适的算法使得对AB服务或者相互调用的速度更快?
    A:  可以使用hello心跳包(报文长度小)做keepalive探测 ,根据响应的RTT来对服务AB分别做优先级队列排序,双方通过调用优先级队列中优先级最高的服务器调用对应服务。
    Q:这个方法确实可以,但有没有考虑如果都调用一个服务器会出现问题吗?
    A:是指负载均衡的问题吗? 可以通过轮转,即不一直给同一个服务器分配任务,按照FIFO类似的方式写一个循环,对不同的任务分配给response time允许时间内的不同服务器 来达成一定程度的负载均衡。同时如果可能的话,每一次调用返回一个response time指标,来更新优先级队列的优先级,更好的做到负载均衡。
    Q:这样你给我设计一个算法,就比如决策树,你给我列出决策树需要的参数以及每个参数大概的占比。
    A:我没有接触过这样的场景,想到的参数只有 RTT、response time,吞吐量这些。其他的我不懂。
    面试官沉默。
  • 反问:具体业务内容

二面 技术面

  • 手撕
  1. 前序遍历
  2. 中序遍历
  3. 后序遍历 (两种方法)不明白面试官为什么想让我写前序的先left再right进栈 最后reverse这种取巧方式。
  • IPC方式: 共享内存、管道( 半双工)、socket、信号和信号量(两个有什么区别)
  • 线程通信方式
  • 两者的区别
  • 用过shell嘛,grep写一条指令访问xxxx之类的, 我说不记得了,都是现场查现场写的。面试官沉默
  • tcp拥塞控制 慢启动拥塞避免。。
  • 虚拟内存 什么是虚拟内存?为什么要用虚拟内存?你知道那些替换算法 LRU LFU FIFO 时间片
  • 问访问百度需要的全过程,从dns(使用UDP)解析域名获得IP,到 HTTP(使用TCP)get或者post命令请求数据,服务端收到请求。。。
  • 接上题,描述完后,问在访问百度的过程中是只访问那一个IP的主机嘛,那一台服务器不会过载嘛,实际过程中一般使用应用层网关代理,那这种是正向代理还是反向代理? 答:不知道,没有了解过。
  • 最后问了一个场景题:秒杀,一万个请求,目前的服务器只能处理一百个请求,如何解决问题?(不允许用加物理机的方式)  提了个redis,
  • 面试官:redis可以,变成可以处理一千个请求了,后面哪? 答不知道。
  • 面试官:除了使用十台带redis的服务器之外,还可以把控制往前移,redis算是使用内存截留一部分请求,那同样的再网关也可以处理,请求端网关也可以。同时把查看界面和请求秒杀分开(我:类似于12306是嘛)
  • 反问:具体部门,进去之后怎么培养。

结果

某一天凌晨起来突然发现流程终止了,早上问hr,hr说了帮忙查一下,然后说欢迎投递下一个批次,然后就没有然后了。

问题与反思

那个服务A和服务B调用的算法设计不知道有没有大佬给个方法,完全没接触过实际场景。
#面试复盘##拼多多##面经#
全部评论
二面过了多久发现流程终止的鸭
点赞 回复
分享
发布于 2021-09-15 14:57

相关推荐

点赞 13 评论
分享
牛客网
牛客企业服务