[问答题]
如果线上某台虚机CPU Load过高,该如何快速排查原因?只介绍思路和涉及的Linux命令即可
参考答案:造成cpu load过高的原因: Full gc次数的增大、代码中存在Bug(例如死循环、正则的不恰当使用等)都有可嵌套时,如何继续执行。
2) Spring 中共定义了7中事务传播类型,明细如下表, 需答出3~4种常见类型即可:
a) PROPAGATION_REQUIRED: 当前没有事务时开启新事务,如果有则加入;
b) PROPAGATION_REQUIRES_NEW: 强制开启新事务,挂起已有事务(如有);
c) PROPAGATION_SUPPORTS: 当前有事务时加入, 没有则以非事务方式执行;
d) PROPAGATION_NOT_SUPPORTED: 以非事务方式执行, 挂起当前事务(如有);
3) 可以在注解或者XML中指定传播类型, 如 “***@Transactional(Propagation=xxx)”
6. IO设计中Reactor 和 Proactor 区别。
参考答案:1、 Reactor被动的等待指示事件的到来并作出反应,有一个等待的过程,做什么都要先放入到监听事件集合中等待handler可用时再进行操作,实现相对简单,对于耗时短的处理场景比较高效,但Reactor处理耗时长的操作会造成事件分发的阻塞,影响到后续事件的处理。
2、Proactor直接调用异步读写操作,调用完后立刻返回,实现了一个主动的事件分离和分发模型;这种设计允许多个任务并发的执行,从而提高吞吐量;并可执行耗时长的任务(各个任务间互不影响),Proactor性能更高,能够处理耗时长的并发场景,但Proactor实现逻辑复杂;依赖操作系统对异步的支持,目前实现了纯异步操作的操作系统少,实现优秀的如windows IOCP,但由于其windows系统用于服务器的局限性,目前应用范围较小;而Unix/Linux系统对纯异步的支持有限,应用事件驱动的主流还是通过select/epoll来实现。
7. [编程题]大数加法
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 256M,其他语言512M
以字符串的形式读入两个数字,再以字符串的形式输出两个数字的和。
输入描述:
输入两行,表示两个数字a和b,-109 <= a , b <= 109 ,用双引号括起。
输出描述:
输出a+b的值,用双引号括起。
输入例子1:
"-26"
"100"
输出例子1:
"74"
8. [编程题]回文子串
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 256M,其他语言512M
给定一个字符串,你的任务是计算这个字符串中有多少个回文子串(回文串是一个正读和反读都一样的字符串)。
具有不同开始位置或结束位置的回文串,即使是由相同的字符组成,也会被计为是不同的子串。
输入描述:
输入仅包含一个字符串,长度不会超过 1000。
输出描述:
输出仅包含一个非负整数, 代表输入字符串有多少个回文子串。
输入例子1:
abc
输出例子1:
3
输入例子2:
aaa
输出例子2:
6
9.[编程题]合并金币
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 256M,其他语言512M
有 N 堆金币排成一排,第 i 堆中有 C[i] 块金币。每次合并都会将相邻的两堆金币合并为一堆,成本为这两堆金币块数之和。经过N-1次合并,最终将所有金币合并为一堆。请找出将金币合并为一堆的最低成本。
其中,1 <= N <= 30,1 <= C[i] <= 100
输入描述:
第一行输入一个数字 N 表示有 N 堆金币
第二行输入 N 个数字表示每堆金币的数量 C[i]
输出描述:
输出一个数字 S 表示最小的合并成一堆的成本
输入例子1:
4
3 2 4 1
输出例子1:
20
输入例子2:
30
10 20 30 40 50 60 70 80 90 100 99 89 79 69 59 49 39 29 19 9 2 12 22 32 42 52 62 72 82 92
输出例子2:
7307
10. [编程题]最小唯一前缀
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 256M,其他语言512M
给定一组个字符串,为每个字符串找出能够唯一识别该字符串的最小前缀。
输入描述:
第一行输入一个整数 n 表示字符串个数
后面n行,每行一个字符串,一共n
美团点评2020系统开发方向笔试题 来自淘豆网m.daumloan.com转载请标明出处.