面经 - 0 - 编程确认

  • 做题 全排列

LC46

  • B+树和红黑树的区别
  • 从一百万个数里面找前1000大的(堆排,建一个大小为1000的小根堆),除了堆排呢?(快排,二分+partition)
  • 分析一下上面两个的复杂度,哪个快(口糊了堆排,因为当时算出来快排是nlogn,堆排是nlogk的。事后发现百度上说快排均摊是O(2n)的,可以通过数列求和证明)
  • 算法题:大整数加法

LC415

  • 算法题:给你一组乱序的数组a,要找出一组l,r,使得a[r]-a[l]最大

LC 53 剑指Offer42

  • 算法题:用一个3*4的二维指针数组,完成数组顺时针翻转

LC 48

  • 二叉树的遍历方式,如果按层次遍历打印呢?

队列

  • 快排 | 冒泡排序,快速排序
  • 递归的过程中会出现什么样的问题?

递归的优点:
1)大问题化为小问题,可以极大的减少代码量;
2)用有限的语句来定义对象的无限集合.;
3)代码更简洁清晰,可读性更好
递归的缺点
1)递归调用函数,浪费空间;
2)递归太深容易造成堆栈的溢出;

  • 给出一个杨辉矩阵 求第k大的元素
  • 三个链表合并

代码找错

在这里插入图片描述

就不问你基础了,之前的面试已经问了很多了,来做一个题吧
提问时间:这个组主要是实现一个浏览器内核,从头造轮子,包括智能指针之类的都是自己实现的。
编程题

  • 实现一个parser,要求能够parse下面这样的串,并返回一个树。要求检查<a></a>这样的标签必须能够对应,不能是<a></aa>
    面试官人特别好,一直在指导我。这个题要注意new出来的东西在匹配失败的时候别忘了delete。LC里有几个类似这种parser的题,见个人博客 - 设计parser
算法题:
  • 最后是两道算法题,不是很难,奇偶位置分别升序和降序的链表转化为升序链表
  • 旋转数组找最小值(本来只有一道,但是第一道做完还有时间就又出了一道)。
  • 最后就直接一道算法题:找出n个长度相同的有序数组合并为一个有序数组后的中位数,我一开始也是笨办法两两合并的归并,面试官将问题简化为只找到两个有序数组合并后的中位数,不断提示可以优化后终于想到比O(n)更好的就是O(logn),写出答案。
  • 最后是一道算法题,合并n个有序数组,每个数组长度不一定相同,我当时想的是两两合并,总体用归并的思想,面试官问了空间复杂度,说性能不是很好。
  • 最后是一道算法题,实现LFU,之前刷题时遇到过,但是太久了很多细节忘记了,写了一会和面试官讲了思路,面试官说时间有限就先这样吧,但肯定了思路说等通知。
  • 算法题:滑动窗口匹配字符串
    有m个不重复的字符,有一个长度为n的字符串,判断字符串中是否存在包含对应所以字符的子串,不要求顺序,返回起始位置,如:[‘a’, ‘b’, ‘c’, ‘d’],和“tbcacbdata", 返回3。
  • 手撕代码 求m个数中最大的n个数
  • 编程题:类似LC93复原IP地址的题目。给定一个全为数字的字符串,要将字符串分为5个数字,每个数字不能超过600。
  • 编程题:LC92 翻转链表m到n:个人博客题解。自己写了一个简单的测试用例测试了一下。写的reverse函数。
  • 算法题:斐波那契数列
  • 柱子接水问题,单调栈解法,面试官不满意,要求O(1)空间复杂度
  • 算法题
  • 手撕智能指针
  • 算法题,多线程打印ABCD
  • 算法题:二分法求浮点数平方根,不得递归,精度要求0.001
  • 反转链表
  • 算法:多个有序数组排序 vector fun( vector<vector > )

先用了priority_queue + int [], 面试官同意想法后开始写,但是后来发现复杂度太高,改成map+int[]。后来网上查了,会写一个类解决(和我的想法也差不多)。总共写了40分钟(用法不熟悉 写得有点慢),写完面试官说“时间差不多了,结束“。 (以为二面要凉了,没想到5分钟后接到电话约三面,hr每次都说” 面试官已经在等你了,快去吧“)

  • 算法:[1 2 3 4 5 6] 排列成[1 3 5 2 4 6] (奇数排右边,偶数排左边,不考虑顺序)

(剑指offer原题)我先用了冒泡,然后面试官问了时间复杂度(O(n2)),想了一会后改成O(n)

  • 股票问题 ([1 3 5 7 2 3 ]是每日股票价格,买一次卖一次,问如何使得收益最大,即求最大差)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值