您的位置:首页 > 文旅 > 旅游 > 拼多多面试总结

拼多多面试总结

2024/10/6 4:03:20 来源:https://blog.csdn.net/Blackoutdragon/article/details/139309025  浏览:    关键词:拼多多面试总结

文章目录

    • 一面
      • 自我介绍
      • 提问
      • 算法
      • 反问
      • 结果
    • 二面
      • 提问
      • 算法
      • 反问
      • 结果
    • 主管面
      • 主管面试准备
        • 算法题
        • 其他
        • 个人提问准备
      • 提问
        • 数据库
          • 普通索引和覆盖索引的区别
          • 索引是什么?索引怎么加快数据库查询的?
          • 索引具体怎么实现的?以B+树为例,节点放了什么?
        • 计算机网络
          • 计算机网络有哪几个层
          • 为什么视频通话使用UDP,而不是TCP?为什么
          • HTTP协议有什么?
      • 算法题
      • 反问
      • 结果

一面

自我介绍

  • 讲了还能多不必要的东西,这里要在私下里总结一下,形成书面文件,然后重点介绍几个和计算机相关的方面。

提问

  • 内核态和用户态的切换

  • HTTTP和HTTPs的区别

  • TCP和UDP的具体区别

  • TCP为什么要三次握手?

  • 数据库中的索引创建如何更快?有什么注意事项?

  • 为什么要创建索引

  • 基本上除了最后两个,其他的都说出来了。

算法

  • 叠罗汉问题
  • 最大上升子序列 + 排序
  • 完美通过

反问

  • 拼多多有末尾淘汰制吗?

    • 没有
  • 我入职之前需要提前学一些什么吗?

    • 不用,java基础就够了,进去了,什么语言十二小时学不会。

结果

  • 一面通过,效果还行,不过二面心里有点发怵了。
  • 上述几个问题也有了清晰的认知和补充,面试官建议好好学习一下java ,然后在进行入职。

二面

  • 不管怎么样,权当是经验学习,明天二面,心里很慌,加油吧,能进就进,进不了,暑假好好准备面试的。
  • 二面还没开始,不过心态放平了,目前还是有很多八股没有背过,不过后续会好好准备的。能进就进,不能进就当作秋招预演了,不过每次都要总结一下,自己还有什么地方欠缺,每一次面试完,都要有所进步。
  • 昨天的面试让我有了一定的经验,就是最后不要问薪资,咱们就问和工作相关的内容,主要是以下两个方面
    • 如果入职的话,我想知道自己大概具体是负责哪个部分,我需要的提前学习什么?
    • 如果能够保证一周六天都到的话,实习转正的概率是多少?有什么硬性的规定吗?

提问

java中string和string buffer的区别?

  • 可变性和不可变性
    • String对象是不可变的。一旦创建了一个String对象,它的值就不能再改变。任何对String对象的修改都会产生一个新的String对象。
    • StringBuffer对象是可变的。可以对StringBuffer对象进行修改,而不会产生新的对象。
  • 线程安全性
    • String是不可变的,因此是线程安全的。在多个线程之间共享String对象是安全的,不需要同步。
    • StringBuffer是线程安全的。它的所有修改方法都是同步的,这意味着它可以安全地用于多线程环境中。
  • 性能
    • 因为String是不可变的,每次对String的修改都会产生一个新的对象,这在需要频繁修改字符串的场景下会带来性能问题。
    • StringBuffer是可变的,并且提供了高效的字符串修改方法,因此在需要频繁修改字符串的场景下,StringBuffer的性能更高。

java中的接口和抽象类?然后优先实现接口还是抽象类

在这里插入图片描述

算法

  • 找到若干个数组中,都出现的元素,并将之作为列表输出。
  • 手动实现,并且没有ide,没有补全,告诉那个老师,给你执行。
  • 好在通过了一个简单的方法,但是运行效率属实不行,后来他提醒我,我还没转过弯了。

反问

问题一

  • 如果入职的话,我想知道自己大概具体是负责哪个部分,我需要的提前学习什么?
  • 我这个组的是中间件。具体省略了。

问题二

  • 如果能够保证一周六天都到的话,实习转正的概率是多少?

  • 实习的话,只要去了,做出点东西了,都挺高的。

结果

  • 这里预测一下,大概率是通不过的,因为第一关的面试官并没有问很多java和数据库的东西,而且算法刚好我就会。
  • 意料之外,这里居然又过了,实在想不到,运气好?还是咋滴?不管了,继续准备吧。

主管面

  • 心里比较慌,上次面试应该是运气好,在我身上实在没找到什么能够让我通过的地方,所以,这次主管面试更加忐忑了,这里上网搜了一下,其他年份的主管面内容,这里准备一下。
  • 刚才心跳的很快,甚至说有点心悸了,因为我就这一个进了主管面,其他的都没有进主管面,这个挂了,其他的就都没有了。不过想了想,这不就是一份工作吗?我能够进主管面,就是运气,能进就进。不能进再继续学,没什么好难过的尽力就行了,坦然面对喽。
  • 放宽心吧,兄弟,加油的!

主管面试准备

  • 大概看了一下网上的东西,还是要好好准备一下算法,不要投入太多希望,能去就去,不能去也没有办法,我们尽力就好了。
  • 很重要的一部分还是要考察你的算法能力,所以要好好做一下目前所有能做到的算法。
算法题

算法题一

  • 给定一个n×2的二维数组,数组的每一行代表一个区间,如果一个区间被另一个区间包含就删掉该区间,返回剩下的所有区间。
  • 比如: [1 2]被[1 ,3]。
  • 这个已经做过了,具体连接如下
  • 对应链接

算法题二

  • dfs非递归二叉树高度,一开始写了个经典队列的bfs,意识到不对后开始改,最后没改完,就说了个暴力找到每个叶子的高度的思路。
  • 这个已经做过了,具体连接如下
  • 对应链接
其他

想通过实习获得什么?
九月份你会回学校吗?

个人提问准备

业务是什么?我会跟着您吗?
我先需要提前学习什么吗?

提问

数据库
  • 让我写了一个sql语句,然后问我如果这个sql语句查询很慢怎么办?
  • 建立索引,反问我索引是什么?底层实现是什么?
select count(*)
from stu
where sex ='male';
  • 我知道是使用索引,但是索引是要自己创建的,但是复习sql语句的时候,就没有练习到创建索引,现在自己这里再复习一下

创建针对sex的索引

create index id_sex on stu(sex);

使用索引覆盖

create index idx_sex_only on stu(sex);

表分区

  • 表stu很大,可以考虑按sex进行分区,查询只扫描相关分区
alter table stu partition by List(sex)(PARTITION p_male values in ('male'),PARTITION p_female values in ('female')
);

优化查询计划

  • 确保查询优化起选择最优的执行计划,使用EXPLAIN分析查询执行计划
EXPLAIN select count(*) from stu where sex='male';
普通索引和覆盖索引的区别
  • 普通索引
    • 普通所以你是为某个或者某些列创建的索引,借此来加速这些列的操作,数据库通过索引可以快速定位到匹配的行。
  • 覆盖索引
    • 索引包含了查询所需要的所有的列,查询只需要访问索引,而不需要访问数据库表的数据行,提高了查询性能。覆盖索引通常是所列索引,覆盖查询中涉及的所有列。
索引是什么?索引怎么加快数据库查询的?
  • 这个问题问的我真是痛心疾首,我知道B+树是MySQL中InnoDB的默认实现等等,但是他说不对,就是索引是怎么实现的,这个目录是怎么实现的,给我问懵逼了,所以挂了。不过我的底子确实太薄了。

正式回答

  • 索引是一种用于快速查找数据的一种数据结构。通过索引,数据库可以更快地找到和访问表中的数据行,无需扫描整个表

什么是索引?

  • 数据库表中一列或者多列的排序副本
  • 存储在一个特殊的数据结构中,通常是B+树或者哈希表,允许快速查找、插入和删除操作

创建索引的几种方式

  • 这个得会呀,不会创建索引,背了那么多没什么意义,人家问的就是怎么创建索引。
# 单列索引
create INDEX index_col on table_name(column_name);
# 多列索引
create INDEX index_cols on table_name(cols1,cols2);
# 唯一索引
create UNIQUE idx_unique on table_name(col);
# 全文索引
create FULLTEXT index idx_fulltext on table_name(column_name)

创建了索引,又是如何在select语句中使用的?

  • 一般情况下,数据库管理系统DBMS会自动选择最优的索引执行查询,不需要在SELECT中显示指明所以需要哪个索引。查询优化器负责分析查询,根据统计信息选择合适的索引优化查询性能。
  • 查看查询计划
    • 使用explain select * from students where age = 22;查看查询的执行计划,确认索引是否被使用。

索引是如何加快查询的?

  • 减少数据扫描
    • 没有索引的时候,需要扫描数据库的每一行(全表扫描),通过索引中的数据查找特定的行。
  • 提供排序顺序
    • 索引按照特定的顺序排序的,查询需要排序,索引不需要排序直接返回
  • 实现快速搜索
    • 允许通过二分查找快速定位数据
索引具体怎么实现的?以B+树为例,节点放了什么?
  • 非叶子节点只存储键值和指向子节点的指针,不存储实际数据。
  • 叶子节点存储键值及其对应的实际数据(或指向数据的指针),并且所有叶子节点通过链表连接在一起,便于范围查询。
    在这里插入图片描述
计算机网络
计算机网络有哪几个层
  • 这道题记得有点混乱,太久没看了,导致当时有点记不清楚了,不过最后又理回来了。
  • OSI的七层
    • 应用层
    • 表示层
    • 会话层
    • 传输层
    • 网络层
    • 数据链路层
    • 网络层
  • TCP/IP网络有的时候会是四层,有的时候会是五层,这里还是记录成五层吧
    • 应用层
    • 网络层
    • 传输层
    • 链路层
    • 物理层
为什么视频通话使用UDP,而不是TCP?为什么
  • 大爷的,今天早上刚看过,虽然当时答的磕磕巴巴,不过还在说出来了。
  • UDP具有更低的延迟,更高的实时性,可以容忍一定的丢包和乱序,保证了视频通话的流畅性和质量
  • TCP虽然提供可靠的传输服务,但是链接建立、流量控制、拥塞控制和重传机制引入了额外的延迟和不稳定性,不适合实时通信的需求。

更加细致地说

实时性

  • UDP
    • 无连接的传输协议,不需要建立链接就可以发送数据,没有三次握手和链接维护的过程,延迟更低,视频通话需要实时传输数据,任何延迟都会影响通话质量。
  • TCP
    • 面向连接的协议,需要建立链接,并且数据传输过程中需要确认和重传,会导致额外的延迟

丢包处理

  • UDP
    • 没有丢包重传机制,重不重传由应用程序自己决定,轻微丢包对于视频影响不大
  • TCP
    • TCP提供可靠传输,确保数据按照顺序到达并且不丢失
    • 某一个数据包丢失了,TCP会重传这个数据包,直到这个数据包受到确认。虽然保证了可靠性,但是会引入延迟和抖动,不利于通话的流畅性。
HTTP协议有什么?
  • 这部分我没有复习到,有点懵逼。
  • 今天早上刚看过,难受
    • 请求行
    • 请求头
    • 请求体

算法题

  • 二叉树的后续后续遍历,以及对应的更换二叉树的连接方式。
  • 这里整理了对应的链接,具体看链接。
  • 对应链接

反问

  • 虽然今天面试面的不好,不过还是想问一下,我需要提前学什么吗?
  • springboot,自己多做一些项目。

结果

  • 不知道呀,能进就进,我已经尽力了,之前几面我都没有准备,这次主管面还是准备了的。心平气和,尽力就好了,加油吧!!
  • 没进,回顾一下,其实回答正确的题目没几个,人家会很失望的,不过也好,不再抱有不该有的期望了。
  • 流程终止了,不知道为啥!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com