记录知识点就是这样的,先被狂鲨后狂鲨他们。原题在这
1. 关于AOP术语
| 术语 | 含义 |
|---|---|
| 目标(Target) | 被通知的对象 |
| 代理(Proxy) | 向目标对象应用通知之后创建的代理对象 |
| 连接点(JoinPoint) | 目标对象的所属类中,定义的所有方法均为连接点 |
| 切入点(Pointcut) | 被切面拦截/增强的连接点(切入点一定是连接点,连接点不一定是切入点) |
| 通知(advice) | 增强的逻辑/代码,也即拦截到目标对象的连接点之后要做的事情 |
| 切面(Aspect) | 切入点+通知 |
| 织入(weaving) | 将通知应用到目标对象,进而生成代理对象的过程动作 |
2. 垃圾收集器的分类
新生代: serial收集器、parnew收集器、paraller scavenge收集器 老年代:seral old 收集器、paraller old 收集器、cms收集器
3.Java程序初始化的几个原则
① 静态对象(变量)优先于非静态对象(变量)初始化;
②父类优先于子类进行初始化;
③按照成员变量的定义顺序进行初始化;
4. 分布式锁的实现方式
- 使用数据库乐观锁实现
- 使用redis的setnx()、expire()方法,用于分布式锁
- 基于Zookeeper实现分布式锁
5.有如下递归函数 test(n),其时间复杂度为多少?
int test(int n) {
if(n <= 1) return 1;
return (2* test(n - 1) + 3* test(n - 2));
}
解析:
因为每一层递归调用了两次递归,所以是2^n
6. 假设磁头当前位于116道,正在向磁道序号增加的方向移动。现有一个磁道访问请求序列为48, 59, 37, 81, 125, 195, 185, 205采用电梯调度SCAN算法得到的磁道访问序列是?
解析:
这道题考察了操作系统的磁盘调度算法,考察了扫描算法(又称电梯算法),我把它和循环扫描算法弄混了,在这里就总结一波磁盘调度算法。
先来先服务:听名字就知道是个什么样的算法,不解释,这个根据题目的请求序列的访问序列是:48, 59, 37, 81, 125, 195, 185, 205
最短寻道时间优先:这个算法就是优先选择从当前磁头位置所需寻道时间最短的请求,首先先排个序:37 48 59 81 125 185 195 205那么这个根据题目的请求序列的访问序列是:125 81 185 59 48 195 37 205
扫描算法(电梯算法):也就是这道题考察到的算法。磁头在一个方向上移动,访问所有未完成的请求,直到磁头到达该方向上的最后的磁道,才调换方向,这就是扫描。题目的请求序列的访问序列是:125, 185, 195, 205, 81, 59, 48, 37
循环扫描算法:只有磁头朝某个特定方向移动时,才处理磁道访问请求,而返回时直接快速移动至最靠边缘的磁道,也就是复位磁头,这个过程是很快的,并且返回中途不处理任何请求,该算法的特点,就是磁道只响应一个方向上的请求。题目的请求序列的访问序列是:125, 185, 195, 205, 37, 48, 59, 81
7. nginx.log是一个日志文件,现在想将日志的最新输出实时打印在屏幕上,用哪个命令可以实现:
A.cat -f nginx.log
B.tee -f nginx.log
C.head -f nginx.log
D.tail -f nginx.log
查看文件内容的命令:
cat、more、less、tail、head, cat: 一次性显示整个文件内容,适用于文件内容少的情况; more和less: 一般显示文件内容超过一屏幕的内容,提供翻页功能 tail:显示文件后几行内容,常用于大文件截取(-f 当文件内容有更新时,tail会自己主动更新,确保一直显示最新的文件内容) head:显示文件前几行内容,常用于大文件截取
8. 由于前端直接可被用户访问,攻击者可以轻易得到页面和通讯过程中的相关信息,进而进行恶意的攻击,关于其攻击的方式描述正确的有哪些?
A. 假定站点 foo.com 的服务器架设在公司内网,提供了任意站点截图服务 foo.com/screenshot?url=xxx,恶意修改 url 中的值为内网地址,构成 SSRF 攻击,进而造成数据泄露的风险
B. 网站 foo.com 提供 POST 方法的 /tansfer/to/xxx 的转账服务,由于未做 CSRF 的防范,被攻击者重复伪造该请求,形成重放攻击,造成经济损失
C. 网站 foo.com 使用了非安全的 HTTP 协议,其中转账服务 POST /transfer/to/xxx,转账金额 money 在 payload 上,假定接口层面采用了随机 token 来防范 csrf 攻击,接口参数未做签名校验,此时攻击者通过篡改 money 的数值,构成中间人攻击
D. 借助社会工程学的理论基础,基于用户的贪婪等心理,制作一个 qq.com 的”冒牌”中奖页面,诱导用户输入账号密码进行登录,造成隐私的泄露,属于”钓鱼”的网络欺诈行为
这是关于网络安全的题目,需要清楚了解。
A选项中的SSRF攻击:是一种由攻击者构造请求,由服务端发起请求的安全漏洞。一般情况下,SSRF攻击的目标是外网无法访问的内部系统(正因为请求是由服务端发起的,所以服务端能请求到与自身相连而与外网隔离的内部系统)主要攻击方式如下:
- 对外网、服务器所在内网、本地进行端口扫描,获取一些服务的banner信息。
- 攻击运行在内网或本地的应用程序。
- 对内网Web应用进行指纹识别,识别企业内部的资产信息。
- 攻击内外网的Web应用,主要是使用HTTP GET请求就可以实现的攻击(比如struts2、SQli等)。
- 利用file协议读取本地文件等。 所以A是正确的
BC选项中的CSRF:CSRF是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。
可以简单的理解为:攻击者可以盗用你的登陆信息,以你的身份模拟发送各种请求对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等
D选项中“钓鱼”的网络欺诈行为就是这样的
9. 假设一个数组采用快速排序,则下面的选项中,不可能是第3趟排序结果的是
A. 4, 8, 6, 10, 12, 16, 14
B. 10, 4, 6, 8, 12, 14, 16
C. 8, 4, 6, 12, 10, 14, 16
D. 4, 8, 6, 12, 10, 16, 14
摘自官方解析:一趟确定1个或者2个点的最终位置,如果是第一次,确定1个。
第二次以后,如果基点在最左边或者最右边确定1个点最终位置。
如果在中间,那么确定2个点的最终位置,所以ACD全错