CVTE 2022届实习生 Web后台开发笔试
Posted JohnnyLin00
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CVTE 2022届实习生 Web后台开发笔试相关的知识,希望对你有一定的参考价值。
JVM
双亲委派机制是指子类加载器会优先委派父类加载器去加载该类,如果父类加载失败,自己才会去加载。
JVM垃圾回收的复制算法是指: 把空间分成两块,每次只对其中一块进行GC。当这块内存使用完时,就将还存活的对象复制到另一块上面。由于大多数新生代对象都不会熬过第一次GC,所以没必要1:1划分空间,可以分一块比较大的Eden空间和两块比较小的Survivor空间,比例是8:1:1 。当回收时,将Eden和Survivor中还存活的对象一次性复制到另一块Survivor空间中。如果存活对象大于10%,则采用一种分配担保策略,多出来的对象直接进入老年代。
对于新生代而言,每次回收都有大量对象死去,只有少量存活,选用复制算法比较合理。
JVM垃圾回收算法中不猜用引用计数的原因是无法检测出循环引用。
继承
Java中类不允许出现多继承。多继承可以通过实现多个接口来是吸纳。
子类不会继承父类的构造方法。
Thread可以被继承用于创建新的线程。
Number可以被继承,Integer,Fload,Double等都继承自Number类。
Double类的声明为 public final class Double extends Number implements Comparable final生明的类不能被继承。
Math被声明为public final class Math extends Object ,不能被继承
ClassLoader类加载器可以被继承,允许用户自定义类加载器。
小根堆 中序遍历
右子树必定是1 6 4 7或1 7 4 6,排除法即可选A。
多线程
停止线程的方法: interrupt()、stop()
Java线程中的Thread.yield( )方法,译为线程让步。顾名思义,就是说当一个线程使用了这个方法之后,它就会把自己CPU执行的时间让掉,
让自己或者其它的线程运行,注意是让自己或者其他线程运行,并不是单纯的让给其他线程。
方法重载
对于重载方法,不要试图通过给予不同的返回值类型(参数列表完全相同)加以区分。因为方法在调用时可以不将返回值赋值给一个对应的变量,这样就没有特征区分。也不要试图通过在调用这样的重载方法时赋值给对应的变量加以区分,因为问题是出现在重载方法定义上,而不是调用上。总而言之,Java不允许仅仅利用返回值的不同来区分重载方法。
方法的重载:
1.方法名必须相同
2.参数列表必须不同
3.其他修饰符可以相同,也可以不同
4.可以抛出不同异常
Synchronize 和 Lock 接口
每个对象都一个内置锁,这是synchronize锁的基础,内置锁是互斥锁,可以实现在同一个时间只会有一个线程在执行逻辑代码。
- synchronize 是关键字,是JVM层面的,Lock是Java接口
- synchronize不能判断是否获取锁的状态,Lock可以判断是否获取到锁。
- synchronize 可以自动释放掉锁(① 执行完同步代码时释放锁 ② 代码出现异常释放掉锁)。 Lock 需要手动在finally中释放掉锁,否则容易造成线程死锁。
- synchronize是可重入,不可中断,非公平的,lock是可重入,可判断,公平的(也可以是非公平的)
- synchronize 修饰的线程A和线程B。当线程A在使用时,线程B 等待,当线程A阻塞时,线程B 一直等待。Lock锁则不一定会一直等待,如果在设置的等待时间内尝试获取不到锁,线程可以不用等待就结束。
数据视图
如果视图是单个基本表只选用选择、投影作导出的,并且包含了基本表的主键,那么这样的视图可以成为且可以被执行更新操作。但是由于视图里没有存放数据,作更新的时候要回到基本表中,所以说还是会影响表。
树
A 选项 画个图就知道了。错误
线性探测,第一个关键字探测1次,第k个关键字要探测k次,所以总共探测(1 + k) * k / 2
在m阶B树中,所有非终端节点至少有ceil(m/2)个孩子(ceil()为向上取整);
快速排序在极端情况下,选择的pivot都是最小(大),此时退化为选择排序。O(n ^ 2)
Java8 optional
Optional.of(obj) 它要求传入的obj不能是null值,否则报NullPointException
Optional.ofNullable(obj) ,来者不拒,传入null就调用Optional.empty(),非null则调用Optional.of(obj)
AOP
Aspectj使用预编译的方式实现AOP
Spring AOP 使用动态代理实现AOP
实现AOP的方法有预编译或动态代理
HTTP
HTTP是一个普遍用在浏览器和web服务器之间进行数据交流的超文本协议。不是二进制协议。
HTTP/2则是一个彻底的二进制协议,头信息和数据体都是二进制的。
请求头里的Cache-Control是no-cache,是浏览器通知服务器:本地没有缓存数据
若响应头中的 Cache-Control:max-age=259200则 是通知浏览器:259200 秒之内别来烦我,自己从缓冲区中刷新
逆波兰表达式
我们平常所见的表达式是其对应语法二叉树中序遍历的结果。而逆波兰式是语对应语法树的后缀表达式结果。
数据库隔离级别
未提交读(read uncommitted): 允许脏读,也就是可能读取到其他会话中未提交事务修改的数据。
提交读(Read committed): 只能读取到已经提交的数据。Oracle 等多数数据库默认都是该级别的。
可重复读: 在同一个事务内查询都是事务开始时刻一致的, 在SQL标准中,该隔离级别消除了不可重复读,但是还存在幻象读。
串行读(Serializable) : 完全串行化的读,每次读都需要获得表级共享锁,读写相互都会阻塞。
Java 语法
int n = new Integer(1000000000);
float f = 0x123; //291.0
short i = (short) 100;
short i = (short) 100;
Short j = (Short) 100; //Inconvertible types; cannot cast 'int' to 'java.lang.Short'
类加载
Hash 索引
HASH索引:利用哈希函数,计算存储地址,检索时不需要像Btree那样,从根节点开始遍历,逐级查找。
优点: 查找效率高。(C选项)
局限:
仅仅满足=,in,<=>,查询,不能范围查询(原先有序的键值经过哈希函数运算,可能不再连续);(A选项)
无法用于排序操作(order by);(B选项)
当重复值时,效率并不比BTree高;
DNS 解析
泛型
第23题不知道答什么,能想到的是: 监控一些容易出错的业务,当发生业务时校验数据在整个系统中是否收支平衡。
如果发生错误则向管理人员报告。
路过的大佬补充补充~~
以上是关于CVTE 2022届实习生 Web后台开发笔试的主要内容,如果未能解决你的问题,请参考以下文章