TO MicroSoft

159 阅读3分钟

一. 算法汇总

  1. 合并K个升序链表
  2. 有效的括号
  3. 简化路径
  4. 二叉树的锯齿形层序遍历
  5. 单词拆分
  6. 二叉树的层序遍历
  7. 100房子,2个鸡蛋,鸡蛋会在某一层摔碎,找出最坏情况的最优解
  8. 给定一个xml格式的字符串str,将其转换成自定义的数据结构保存,然后输入自定结构的根节点打印出字符串。
E.g.str ="\<root>\<sub1>2\</sub1>\<sub2>3\</sub2>\</root>"
  1. 给定一个整数N,输出一个字符串数组,按照字符排序
E.g. N = 13, 期望输出是[1,10,11,12,13,2,3,4,5,6,7,8,9]
N = 21, 输出[1,10,11,12,13,14,15,16,17,18,19,2,20,21]
  1. 洗牌,假设你有N张牌,希望你能将着N 张牌随机排序
  2. 给定两个字符串, s1, s2, s1,s2都只包含小写字母, s2中的*表示0到多个字符,?号表示一个字符, 问s1和s2是否匹配。
e.g. s1 = "abc", s2="a*", 输出是true
s1 ="abc", s2="a?c*", 输出是true
s1 ="abc", s2="a?c?", 输出是false
  1. 假设有很多Thread需要调用一个API,要求每个Thread的调用间隔超过30秒,如果同一个Thread 30秒内调用API,则返回空。接下来是如果有一百万了Thread会访问,但是只有大概1000个Thread会比较频繁的调用API, 其他都只访问一次,要怎么优化。
  2. 给定2个字符串s1,s2,可以假设都只包含小写字符和#, #表示删除前面一个字符,问s1和s2是否相等。
E.g. s1 ="##", s2="a#", 输出true
s1 ="a##b#cc", s2="cb", 输出false
  1. 写斐波那契数列
  2. 投篮?
假设1::题问“谁胜率大”等价于“谁得分期望高”,那么毫无疑问两者得分期望相等,自然答案为两者胜率一样。\
假设2:题问“谁胜率大”等价于“谁获胜的频率高”。易证两者投篮次数期望相等,则退化为求证单次投篮,谁获胜的概率大。由题设可知,A百分百得两分,B三分之二得三分,三分之一不得分(并进去后续篮板过程)。\
由上述可知,B在进球时一定获胜,即至少有三分之二的概率在单次投篮中获胜。\
那么显然答案为B。\
但问题是:如果按照假设2的逻辑,篮板过程纯属无用条件,就算是进入篮板阶段,A罚球百分之百得100分,B罚球百分之一得1分,这样仍然不影响解题过程。\
说白了,我的看法是,这题充其量是个文字游戏题,谈不上算法,也谈不上数学。
  1. 假如一个服务,突然访问量增加,你觉得如何设计可以解决这个呢?
  2. 算法题:力扣原题31题——下一个排列
  3. 海量数据取topn,你觉得可以怎么做呢?
  4. 算法题:力扣原题146题——缓存机制
  5. 如果让你设计一个邮件系统你会怎么设计呢?
  6. 算法题:力扣原题901题——股票价格跨度
  7. 设计一个海量数据分布式场景下,快速取出前10%的问题
  8. 算法题:力扣原题200题——岛屿数量
  9. zhuanlan.zhihu.com/p/422456191