知乎一面就这么难?这面试题我怕了!

职位: 后端开发实习生

时间: 2020.9.20

结果:  一面通过

昨天有个群友去知乎一面,回来在群里抱怨知乎一面有多难,小编让群友把面试题分享了出来,让大家看看真有那么难吗?

文章中所有面试题和答案小编都为大家整理了:戳这里免费领取,暗号:CSDN,还有更多大厂面试专题资料和视频哦

(话不多说,直接开始)

一.算法题

1.合并两个有序数组

就是归并排序的一部分, 直接写算法模板

while(i  mid && j  r){         
if(q[i]  q[j]){ t[k ++] = q[i ++]; }else{t[k ++] = q[j ++];}     } 

while(i  mid){ t[k ++] = q[i ++]; } 

while(j  r){t[k ++] = q[j ++]; } 

for(int i = l, j = 0; i  r; i ++, j ++){ q[i] = t[j]; }

2.说一下归并排序的过程

1\. 确定分界点 mid = (l + r) / 2 [l, mid] [mid + 1, r] 
2\. 递归排序左右 
3\. 合并两个有序数组 时间复杂度 O(NlogN) 因为会递归 logN 层 每层都是 O(N) 的 是稳定的

3.说一下快排的过程

1\. 确定分界点 x 
2\. 调整区间 是得左边区间都小于等于 x 右边区间都大于等于 x 
3\. 递归排序左右区间

4.说一下快排的最坏情况是什么,快排稳定嘛

不稳定 时间复杂度 O(NlogN) 最坏情况是每次取的都是最大或者最小元素

5.说一下哈希表这种数据结构

哈希表由逻辑上一系列可以存放词条的单元组成,这些单元被称为桶,底层可以由数组实现。
散列函数是将关键码映射到数组地址空间的函数。
装填因子是非空桶的数目与桶单元总数的比值
哈希冲突: 1. 开散列 2. 闭散列

6.了解哈希表扩容的过程吗

当装填因子达到了阈值之后,会扩容。redis中是会开辟另一个两倍大小的哈希表,然后将原哈希表中第一个非空元素插入到第二个哈希表
中,之后每次插入一个元素的时候,都将原表中的第一个非空元素插入到第二个表中。

7.线程和进程的区别

1.进程是具有一定独立功能的程序在一个数据集合上的一次
  • 11
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值