5.31拼多多服务端开发实习生一面(75min)

大哥们请问下,5.31拼多多服务端开发实习生一面(75min)
最新回答
浅墨时光

2026-05-30 15:18:56

拼多多服务端开发实习生一面整体围绕自我介绍、算法题、八股文知识(涵盖Java基础、计算机网络、操作系统、Spring框架、数据库等)以及项目环节与反问环节展开,面试时长75分钟。具体内容如下:

  • 自我介绍:面试开场通常会让候选人进行自我介绍,以了解候选人的基本背景、教育经历、项目经验、技能特长等信息,为后续提问做铺垫。
  • 算法题:给出二叉搜索树的root结点,要求查找出第k大的结点。二叉搜索树具有左子树节点值小于根节点值,右子树节点值大于根节点值的特性,可以利用这一特性通过中序遍历的逆过程(右 - 根 - 左)来找到第k大的结点。
  • 八股文知识

    Java基础与集合相关

    介绍equals和hashcode函数:equals用于判断两个对象是否相等,hashcode用于获取对象的哈希码。在哈希集合中,如果两个对象equals相等,那么它们的hashcode也必须相等;反之则不一定。

    介绍JDK1.8的hashmap,get和put方法:JDK1.8中HashMap采用数组 + 链表 + 红黑树的结构。put方法先计算键的哈希值确定数组下标,若该位置为空则直接插入;若不为空且键相等则覆盖值;若为链表且长度超过阈值则转为红黑树。get方法同样先计算哈希值确定下标,然后在链表或红黑树中查找键对应的值。

    介绍红黑树,hashmap中红黑树的key是怎么查找的:红黑树是一种自平衡的二叉查找树,具有特定的性质保证树的高度近似平衡。在HashMap中查找红黑树的key时,从根节点开始,若key小于当前节点值则向左子树查找,若key大于则向右子树查找,直到找到相等的key或到达叶子节点。

    介绍currenthashmap:JDK1.8中ConcurrentHashMap采用数组 + 链表 + 红黑树的结构,通过CAS和synchronized实现并发控制。在put和get操作时,先计算哈希值确定数组下标,然后对相应位置的节点进行操作,不同情况下使用不同的锁策略保证线程安全。

    计算机网络相关

    讲一下TCP和UDP:TCP是面向连接的、可靠的传输协议,提供流量控制和拥塞控制,适用于对数据准确性要求高的场景,如文件传输、网页浏览等;UDP是无连接的、不可靠的传输协议,不提供流量控制和拥塞控制,但传输效率高,适用于实时性要求高的场景,如视频直播、在线游戏等。

    TCP建立连接的流程:即三次握手,客户端发送SYN包请求建立连接,服务器收到后回复SYN + ACK包表示同意,客户端再发送ACK包确认,连接建立。

    为什么需要三次握手:三次握手可以确保双方都具有收发能力,避免历史连接导致的资源浪费和错误连接。

    TCP断开连接的过程:即四次挥手,一方发送FIN包请求断开连接,另一方回复ACK包确认,然后另一方也发送FIN包,发送方再回复ACK包,连接断开。

    TCP如何保证可靠传输:通过序列号、确认应答、超时重传、流量控制和拥塞控制等机制保证数据的可靠传输。

    具体讲一下拥塞控制和滑动窗口:拥塞控制通过慢开始、拥塞避免、快重传和快恢复等算法防止网络拥塞;滑动窗口是一种流量控制机制,发送方和接收方分别维护一个窗口,通过窗口大小控制数据的发送和接收速率。

    介绍HTTP协议:HTTP是超文本传输协议,用于在互联网上传输超文本,采用请求 - 响应模型,默认端口为80。

    HTTP与HTTPS的区别:HTTPS在HTTP的基础上加入了SSL/TLS协议进行加密,端口为443,比HTTP更安全。

    HTTP通信的具体流程:客户端发送HTTP请求到服务器,服务器收到请求后处理并返回HTTP响应,客户端接收响应并解析显示。

    非对称加密和对称加密的具体算法和使用场景:对称加密算法如AES,加密和解密使用相同密钥,加密效率高,适用于大量数据的加密;非对称加密算法如RSA,使用公钥和私钥,公钥加密私钥解密,私钥签名公钥验签,适用于密钥交换和数字签名等场景。

    如何检验CA证书的真伪性,如果是伪造的怎么办:可以通过检查证书的颁发机构、有效期、域名等信息来检验真伪,也可以使用操作系统或浏览器内置的证书信任链进行验证。如果发现伪造证书,应拒绝连接并报警。

    HTTPS一定是安全的吗:HTTPS虽然通过加密保证了数据传输的安全性,但仍然可能存在中间人攻击、证书颁发机构被攻击等安全风险,不能绝对保证安全。

    操作系统相关

    介绍进程与线程:进程是资源分配的基本单位,线程是CPU调度的基本单位,一个进程可以包含多个线程,线程共享进程的资源。

    进程有哪些状态:包括新建、就绪、运行、阻塞和终止等状态。

    进程间的通信方式:有管道、消息队列、共享内存、信号量和套接字等。

    介绍死锁:死锁是指两个或多个进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,这些进程都将无法继续执行下去。

    死锁如何预防:可以通过破坏死锁的必要条件,如互斥条件、请求与保持条件、不剥夺条件和循环等待条件来预防死锁。

    Spring相关

    介绍项目中用到了哪些注解:如@Controller、@Service、@Component、@Autowired等。

    autowired和resource的区别:@Autowired是Spring提供的注解,默认按类型装配;@Resource是JSR - 250提供的注解,默认按名称装配。

    按类型装配的话,如果有两个类型一致的怎么办:可以通过@Qualifier注解指定bean的名称来解决。

    controller,service,component注解有什么区别:@Controller用于标注控制器层,@Service用于标注服务层,@Component是一个通用的注解,用于标注其他组件。

    bean加载流程:包括实例化、属性赋值、初始化等阶段。

    介绍AOP:AOP即面向切面编程,通过将横切关注点与业务逻辑分离,提高代码的模块化和可维护性。

    AOP具体怎么实现的:通过动态代理实现,在运行时创建代理对象,将切面逻辑织入到目标对象的方法中。

    介绍动态代理与反射(源码):动态代理分为JDK动态代理和CGLIB动态代理,JDK动态代理基于接口实现,CGLIB动态代理基于继承实现;反射可以在运行时获取类的信息并操作类的属性和方法。

    数据库相关

    项目有没有用到索引,介绍一下:索引是一种数据结构,用于加快数据的查询速度,常见的索引类型有B树索引、哈希索引等。

    介绍session与token,JWT:Session是一种服务器端的会话管理机制,Token是一种客户端的令牌机制,JWT是一种基于JSON的Token格式,用于在客户端和服务器之间安全地传输信息。

    介绍GEO:GEO是Redis中用于存储地理位置信息的模块,可以计算两个位置之间的距离、查找指定范围内的位置等。

    redis持久化:包括RDB和AOF两种方式,RDB是定时将内存中的数据快照保存到磁盘,AOF是将每一条写操作命令追加到文件中。

    介绍redis中hash与java中的hashmap有什么区别:Redis中的Hash是一个字符串类型的键值对集合,Java中的HashMap是一个基于数组和链表实现的哈希表。

    介绍项目中的websocket协议:WebSocket是一种在单个TCP连接上进行全双工通信的协议,适用于实时性要求高的应用,如在线聊天、实时监控等。

    介绍Mysql的索引结构,好处:MySQL常见的索引结构有B树索引和哈希索引,B树索引可以加快数据的查询速度,提高数据库的性能。

    介绍事务,隔离级别:事务是一组原子性的操作,要么全部成功,要么全部失败;隔离级别包括读未提交、读已提交、可重复读和串行化,用于解决并发事务带来的问题。

    介绍MVCC:MVCC即多版本并发控制,通过保存数据在某个时间点的快照来实现并发控制,提高数据库的并发性能。

    介绍跳表:跳表是一种有序的数据结构,通过在链表的基础上增加多层索引来加快查询速度。

    介绍redis集群与通信:Redis集群通过分片的方式将数据分布在多个节点上,提高系统的可扩展性和性能;节点之间通过Gossip协议进行通信,交换集群状态信息。

  • 项目环节与反问环节:面试官可能会针对候选人的项目经历进行深入提问,了解候选人在项目中的角色、贡献和遇到的问题及解决方案等;候选人也可以在反问环节向面试官了解公司的技术栈、团队文化、实习内容等相关信息。