.给一个单向链表,有哪些排序方法?时间复杂度是多少?(答了很多)
用快排实现一下这个单向链表。
实现完了后,要求写一些测试用例,并运行
能不能优化一下你的代码
swap函数你使用的是赋值,这样慢了,能不能再快一些
求15个数的前5大的数
我心想这不是求前K大数吗,有什么难的,我说用堆排序,面试官说你讲一下堆排序怎么实现,这就回答的很流利,然后叫我实现一下代码,用测试用例实现运行
代码完成后,问我现在不能用堆排序,怎么做?我说可以Quick Select
然后说现在数很大,有3w个数据怎么查?
我说是否有很多重复数据,若重复数据多可以用hash,去掉重复元素再排序,或者用堆
然后询问我现在有10亿个数据,我说用分治法,然后讲了下怎么实现(中间提到了bitmap,失误了,想错方向了)
给一个数6,2进制为110,反转这个二进制为011,返回为3
拿到题感觉挺简单的,一开始想能不能用数学方法先解,花了3分钟吧,感觉不行,然后老老实实的用位运算进行与计算
写完一样的测试用例跑一遍,然后出现了问题,一开始我设置的二进制固定为了32位(被之前的大数影响了),然后修改代码,设置一个numsize统计二进制数的位数
调用了math.h中的floor(log2)来实现这个统计位数,测试用例也过了,问面试官可以吗?面试官说,不能调库。写了1小时多的代码的我就懵了,然后后面就是实现这个统计位数,以及优化代码
讲讲剪枝是怎么进行的
递归和动态规划的区别?动态规划常用来做什么类型的题目
- 合并两个有序数组
- 删除链表的倒数第n个节点
数组和链表有什么区别?
如果要让你对数组中的数字进行排序你会有哪些方法?
快速排序是稳定的排序吗?有什么方法尽量避免变量选取不好的情况?
假如说,现在有一个数组,需要你去找到最大的 K 的数字,该怎么实现?
手写多线程交叉打印数字(√)
将给定数组中的全体奇数放在全体偶数前面
这个不适用额外空间能做到吗
二叉树的RR LL旋转?
int[] 数组 三数相加为 0 怎么实现?排序了之后呢?
两重for循环大的应该放那边儿比较省时
手撕单调栈
设计题:一个应用程序会写两个数据库,保证这两个数据库的操作满足原子性(随时存在宕机的可能性)
设计题:线上有一个服务调用十分缓慢,要如何排查?