百度笔试

1.java程序初始化的几个原则

彻底搞懂java程序的初始化顺序

  • 静态优于非静态
  • 变量先于块
  • 父类优于子类进行初始化
  • 按照成员变量的定义顺序进行初始化

2.AOP中的几个术语

AOP为Aspect Oriented Programming的缩写,意为:面向切面编程
(1)切面(Aspect):被抽取的公共模块,可能会横切多个对象。 在Spring AOP中,切面可以使用通用类(基于模式的风格) 或者在普通类中以 @AspectJ 注解来实现。
(2)连接点(Join point):指方法,在Spring AOP中,一个连接点 总是 代表一个方法的执行。
(3)通知(Advice):在切面的某个特定的连接点(Join point)上执行的动作。通知有各种类型,其中包括“around”、“before”和“after”等通知。许多AOP框架,包括Spring,都是以拦截器做通知模型, 并维护一个以连接点为中心的拦截器链。
(4)切入点(Pointcut):切入点是指 我们要对哪些Join point进行拦截的定义。通过切入点表达式,指定拦截的方法,比如指定拦截add、search。
(5)引入(Introduction):(也被称为内部类型声明(inter-type declaration))。声明额外的方法或者某个类型的字段。Spring允许引入新的接口(以及一个对应的实现)到任何被代理的对象。例如,你可以使用一个引入来使bean实现 IsModified 接口,以便简化缓存机制。
(6)目标对象(Target Object): 被一个或者多个切面(aspect)所通知(advise)的对象。也有人把它叫做 被通知(adviced) 对象。 既然Spring AOP是通过运行时代理实现的,这个对象永远是一个 被代理(proxied) 对象。
(7)织入(Weaving):指把增强应用到目标对象来创建新的代理对象的过程。Spring是在运行时完成织入。
切入点(pointcut)和连接点(join point)匹配的概念是AOP的关键,这使得AOP不同于其它仅仅提供拦截功能的旧技术。 切入点使得定位通知(advice)可独立于OO层次。 例如,一个提供声明式事务管理的around通知可以被应用到一组横跨多个对象中的方法上(例如服务层的所有业务操作)。
记录 AOP 的一些专业术语(非 Spring 专属):

切面(Aspect) 就是交叉在各个业务逻辑中的系统服务,类似于安全验证,事务处理,日志记录都可以理解为切面

织入(weaving) 就是将切面代码插入到目标对象某个方法的过程,相当于我们在jdk动态代理里面的 invocationHandler接口方法的内容

连接点(JointPoint) 理论上可能被切面织入的所有方法 ,比如addStudent,delStudent ,getStudentList…通常所有方法都可以被称为连接点

切入点(PointCut) 就是实际上被切面织入的方法

目标对象(target) 就是切入点和连接点所属的 类 StudentService

通知(Advice) 就是切面的实现,切面织入的目标对象,时间点(方法执行前 ,后,前后,异常)以及内容

顾问(Advisor) 其实就是通知的一个封装和延伸,可以将通知以更为复杂的方式织入到某些方法中
Aspect(切面):切入点+通知。

joinPoint(连接点): 目标对象,所有可以增强的方法。

Advice(通知/增强):增强代码。

PointCut(切入点):目标对象,将要和已经增强的方法。

Introduction(引入):声明某个方法或字段。

Target(目标对象):被代理的对象

AOP 代理(AOp Proxy) AOP框架创建的对象用来实现切面。

Weaving(织入):将通知应用到切入点的过程。

3.SCAN磁盘调度算法(电梯调度算法)

SCAN算法
也就是很形象的电梯调度算法。先按照一个方向(比如从外向内扫描),扫描的过程中依次访问要求服务的序列。当扫描到最里层的一个服务序列时反向扫描,这里要注意,假设最里层为0号磁道,最里面的一个要求服务的序列是5号,访问完5号之后,就反向了,不需要再往里扫。结合电梯过程更好理解,在电梯往下接人的时候,明知道最下面一层是没有人的,它是不会再往下走的。

Sample
假设磁头当前位于第99道,正在向磁道序号增加的方向移动。现有一个磁道访问请求序列为33,59,13,77,123,170,160,185,
采用SCAN调度(电梯调度)算法得到的磁道访问序列是( )
123,160,170,185,77,59,33,13

4.分布式锁的几种实现方式

分布式锁的几种实现方式

5.哈夫曼树(Huffman树)

使用哈夫曼编码来编码字符串"aaaabbcd"时,得到的编码长度为多少?

6.四种线程池拒绝策略

四种线程池拒绝策略

7.JVM几种常见的垃圾收集器总结

JVM几种常见的垃圾收集器总结

8.进程P创建的若干个线程不能共享的是

共享的资源有
a. 堆 由于堆是在进程空间中开辟出来的,所以它是理所当然地被共享的;因此new出来的都是共享的(16位平台上分全局堆和局部堆,局部堆是独享的)
b. 全局变量 它是与具体某一函数无关的,所以也与特定线程无关;因此也是共享的
c. 静态变量 虽然对于局部变量来说,它在代码中是“放”在某一函数中的,但是其存放位置和全局变量一样,存于堆中开辟的.bss和.data段,是共享的
d. 文件等公用资源 这个是共享的,使用这些公共资源的线程必须同步。Win32 提供了几种同步资源的方式,包括信号、临界区、事件和互斥体。
独享的资源有
a. 栈 栈是独享的
b. 寄存器 这个可能会误解,因为电脑的寄存器是物理的,每个线程去取值难道不一样吗?其实线程里存放的是副本,包括程序计数器PC

9.tcp粘包怎么处理

1)发送方

对于发送方造成的粘包问题,可以通过关闭Nagle算法来解决,使用TCP_NODELAY选项来关闭算法。

(2)接收方

接收方没有办法来处理粘包现象,只能将问题交给应用层来处理。

(2)应用层

应用层的解决办法简单可行,不仅能解决接收方的粘包问题,还可以解决发送方的粘包问题。
1、定长包
2、包尾加\r\n(分隔符)
3、包头加上包体长度
4、更复杂的应用层协议

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值