Skip to content

Latest commit

 

History

History
147 lines (135 loc) · 5.88 KB

猿辅导所有问题汇总.md

File metadata and controls

147 lines (135 loc) · 5.88 KB

算法

  • 括号匹配(lc:22):1
  • 对角线遍历(lc:498)
  • 累加数(lc:306)
  • 二叉树中序遍历的后继节点
  • 判断—棵二叉树是否是对称的
  • 有若干[30,50,100]优惠券,求给定一个数值求最优的方案。例如∶价格是40=>[30]80 =>[30,50].110=>[30,30,50]
  • 搜索旋转数组
  • 带精度的sqrt
  • 矩阵中的最长递增路(lc:329)
  • 删除单向链表中重复的数字
  • 给一个以字符串表示的非负整数num,移除这个数中的k为数字,使得剩下的数字最小(单调栈)
  • 给定一个二叉搜索树,并给出他的前序序列,输出中序序列,时间复杂度O(n),并给出证明
  • 非递归中序遍历
  • 非递归后序遍历
  • 单链表代表一个大整数,给它低位加上一个数,返回加上后的链表
  • 链表压缩,a->a->a->d->d->b->z->z->null,转换为3a->2d->1b->2z->null (写了一个生成新的链表,又要求重写,在原链表上修改)
  • 给一棵树,当一个节点的左节点下的两个节点都是1,或者是右节点下的两个节点都是1时,这个节点满足条件。返回所有满足查找条件的节点
  • 求树的直径
  • 判断一棵树是否为二叉平衡树
  • 大数相乘
  • 两个降序链表的第k大元素
  • 二叉树的深度
  • 两个字符串的最长公共子串
  • 给一个队列,借助两个栈,将队列中的元素排序
  • 字符串排序 首先按照长度排序,然后按照字符串排序。I am a an student.------->I a am an student
  • 两个字符串是否由相同字符构成
  • N皇后
  • 升序链表转成二叉平衡搜索树
  • 给定一个字符矩阵,里边只有O和X,把所有被X包裹的O变为X
  • 一个单向链表,根据value的奇偶性拆成2个链表,并且返回的两个链表是升序的
  • 数组求每一个数的下一个比它大的数字(先写了O(n2),写完想起来了O(n)的栈)
  • 给一个数,求出树中祖先节点和其后代节点差值的最大值(思路对了,手撕没过)
  • 整数数组拼接成最小数
  • 顺时针递增打印数组
  • 最长回文串
  • 最大正方形面积
  • 合并k个有序链表
  • 区间列表的交集(lc:986)
  • 判断两个字符串是否是相似字符串,相似的含义是只允许交换一次字符串的两个位置,使得和第二个字符串相等,那么他们就是相似的。
ab, ba => true
abax, abax => true
abc, abc => false
aac, abc => false
1 字符串长度是否相等
2 排序后字符串是否相等
3 双指针判断相同位置不同字符的对数是否等于2
4 不同字符为0时时,是否有重复字符
  • 删除倒数第K个节点
  • Z字打印二叉树
  • 非严格递增数组1,2,3,3,3,4,5,找到目标数字所在的第一个位置,无则输出-1,如3,输出2,要求O(log n);(变种二分)
  • 从l到r反转链表
  • 最小路径和
  • 输入两个数组,从两个数组中各取一个值,输出两个值的和为0的所有组合并需要去重。
输入: nums1={1 ,-100},nums2={-1,-1,0,1} ,输出:{{1,-1},{0,0}}
  • topK
  • 求一个长度为n的无序数组中,第m大的数 topk?
  • 找二叉查找树的两个节点相差的最小值(非递归中序+对比相邻节点的差)
  • 二叉树剪枝
  • 二叉树指定层的节点个数
  • 双向链表奇偶位置节点拆分
  • 反转链表,迭代+递归
  • 字符串相加
  • 整数拆分
  • 给一个字符串数组,把由相同字母组成的字符串分入同组
  • 同样给了一个整型数组 [100,2,1,4,3,3,101,200] 从这个数组找到连续元素的长度,比如1,2,3,4 最长输出4。
  • 分割数组(lc:915)
  • LeetCode求两个链表和,从头到尾相加即可
  • 一个链表,给定一个目标值,比目标值大的节点去到链表后面,要求不改变相对顺序 比如1 3 2 1 3 2 1 给定目标值2,返回链表1 2 1 2 1 3 33.
  • 最长公共子序列
  • 判断二叉树是不是BST
  • 求一个数的平方根,精确到0.01。
  • 重排链表(lc:143)
  • 利用循环链表写一个队列

Java

  • 介绍一下垃圾收集器
  • g1和cms有什么区别
  • 为什么g1可以在保证用户吞吐量的情况下进行垃圾收集
  • Java中实现加锁的方式
  • sychronized及锁升级过程
  • 底层AQS实现原理
  • ConcurrentHashMap
  • 线程状态
  • 线程池
  • 深拷贝,浅拷贝
  • 说说线程安全
  • Lock和Synchronized的区别
  • 逃逸分析
  • JVM内存区域,这些区域会内存溢出吗,栈什么情况下会溢出,堆呢
  • 堆区的垃圾回收机制,为什要用分代策略?
  • 为什么老年代不采用复制算法?
  • SpringBoot自动装配的原理
  • Spring中Aop是如何实现的?
  • Cglib和JDK的动态代理有什么区别?
  • Spring是怎么实现Ioc的?
  • Java的反射机制了解吗?
  • 反射机制中获得实例的方式有几种?分别是什么?
  • getClass和forName得到的Class实例是同一个实例还是不同的实例?
  • 讲一下ClassLoader?
  • String,StringBuilder,StringBuffer
  • HashMap

mysql

  • mysql建立索引的原则
  • 聚簇索引和非聚簇索引区别
  • B+树结构、为什么不用B树或二叉树
  • 事务四大特性
  • 事务隔离级别
  • 用mysql实现一个分布式锁
  • MVCC具体原理

计网

  • http讲一下
  • get和post的区别
  • get是否可以有请求体
  • 手写http request报文和 http response报文
  • 四次挥手过程
  • close_wait作用
  • TCP有什么特点?
  • TCP具体的可靠性指什么?怎么确保数据的正确性?
  • 流量控制和阻塞控制的区别是什么?
  • Socket跟其他的方式有什么不一样?
  • OSI七层网络模型
  • 网络层有哪些协议?
  • ICMP解释一下,有什么作用?除了判断是否能正常通信还有什么作用?

mq

  • 如果有几百万消息堆积,如何处理
  • 如何保证消息消费的可靠性,顺序性
  • 消息队列方式有什么优缺点?
  • 消息队列为什么比共享内存慢?(需要额外的复制)
  • 共享内存有什么缺点?它怎么保证同步操作?

其他

  • 令牌桶