微派_服务端开发_凉经
早上面的,算法题蛮难的,然后我给个非正解,时间复杂度也过得去,但晚上就挂,面试官想让我给出最优解,有点……逆天。
面了70分钟。
-
个人经历与算法基础
问了好几个的算法知识。因为我是打ACM的,没什么参考价值就不贴了。
-
代码实现与内存管理
- 问题(算法):实现判断整数回文的函数。
- 追问:能仅用栈内存实现吗,Java中堆与栈内存的对象的区别?
- 问题(算法,题目在最后):如何判断多个基因序列的血缘关系?
-
JIT与计算机网络
- 问题:Java的JIT编译器原理是什么?
- 追问:JIT编译的机器码与JVM解释执行有何本质区别?
- 追问:Java与Python的解释过程差异?
-
计算机网络
- 问题:简述OSI七层模型。
- 追问:RPC协议属于哪一层?
- 追问:为何需要注册中心?
-
反问
#软件开发笔面经##微派##春招##面经#基因序列同源分组问题
问题描述
用不含重复字母的字符串表示一段基因序列。如果一段基因序列可以通过以下任一操作得到另一个基因序列,则认为这两段基因是同源的(或者说有血缘关系):
- 增加一个字母
- 删除一个字母
- 改变一个字母
给定若干个基因序列,求一共有多少种不同的血缘关系(即连通分量的数量)。
输入规范
- 输入仅包含小写字母
- 基因序列的总数量不超过 10,000
示例
示例 1
输入:
["a", "b", "ab", "cde"]
输出:2
解释:
- "a"、"b" 和 "ab" 互为同源(可通过增加或删除一个字母相互转换)
- "cde" 与其他序列不同源
- 因此共有 2 个血缘组
示例 2
输入:
["a", "ab", "abc", "ba"]
输出:1
解释:
- 所有序列都在同一个连通分量中(可以通过一系列操作相互转换)
- 因此共有 1 个血缘组