2021-03-04

2020.06.05鹅厂日常实习生后台开发岗


视频面试,面试官是一位温柔的小姐姐。问题大致如下:
Q1.从n个数中找到第k大的数
A:按照递减的方式快速排序,输出第k个数。
Q2.简述快速排序的过程
(当时说的乱七八糟)
其思路是选定主元,调整序列中的元素,使得调整后主元左侧的元素均小于等于主元,右侧的元素均大于主元。对主元左侧和右侧元素分别进行递归调整,直到当前调整区间长度不超过1。
调整过程:将序首元素赋给一个临时变量,令left, right分别指向序列首尾。
1.如果right指向的元素大于临时变量,令其不断左移,当right指向的元素小于等于临时变量时,将right指向的元素挪到left处。
2.如果left指向的元素小于等于临时变量,令其不断右移,当left指向的元素大于临时变量时,将left指向的元素挪到right处。
重复以上两个过程,直到left与right相遇。
Q3.快速排序可以如何改进
(当时瞎说的,取序列中间的数作为主元,之后再进行调整,小姐姐尴尬一笑,估计没想到我这么菜)

1.切换为插入排序
快速排序在切分到后期时,数组长度会越来越小,可以采用插入排序来代替快速排序,对于小数组,插入排序比快速排序的性能更好。
2.主元的选取
最好的情况下是取数组的中位数为主元,但计算中位数的代价很高,可以随机取出来3个数,取中间大小的为主元。
3.切分
对于有大量重复元素的数组,可以将数组切分为三部分,分别对应小于、等于和大于切分元素,这样在递归时就可以剔除相等的元素,减少比较的次数。
Q4.说一下C++的虚函数吧
(平时没用到过,不会)
虚函数是C++中用于实现多态的机制,核心理念就是通过基类访问派生类定义的函数,只能借助于指针或者引用来达到多态的效果。
Q5.Linux中查看磁盘占用情况的命令是什么
A:df。
Q6.Linux中查看进程的命令是什么
A:ls。
Q7.Mysql数据库中索引的底层数据结构是什么
A:B+树。
Q8.简单说一下B+树的结构吧
(一时不知道该如何表达,没回答上来)
B+树是一种多叉搜索树,包含根节点、内部节点和叶子节点,所有叶子节点位于同一层。B+树可进行两种查找:一种是从最小关键字开始的顺序查找,另一种是从根节点开始的多路查找。其特点是能保持数据稳定有序,插入与修改的时间复杂度在对数级。
一个m阶B+树有以下特征:
1.有k个子树的节点包含k个关键字(B树中是k-1个关键字),每个节点不保存数据,只用来索引,所有数据都保存在叶子节点。
2.所有的叶子节点中包含了全部关键字的信息以及指向含这些关键字记录的指针,且叶子节点本身按照关键字的大小非递减链接形成链表,可以按照排序的次序遍历全部记录。
3.所有节点的关键字都同时存在于其子节点,在子节点中是最大(或最小)关键字。
Q9.对Golang有了解吗
A:不了解。
Q:工作需要的话会取学习吗?
A:会。
大致就想起来这么多,最后结果当然是GG,要多总结多学习啊。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郭动手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值