0409笔试总结

1.当线程在活动之前或活动期间处于正在等待、休眠或占用状态当该线程被中断时,抛出该异常。
1)java.lang.Object 类的 wait 方法 使线程进入堵塞状态
2)java.lang.Thread 类的 sleep 方法 使线程进入休眠状态
3)java.lang.Thread 类的 join 方法 使线程按特定顺序执行(当线程a里调用了b.join(),则需等待b线程执行完才能继续执行线程a)
调用了b.join(1000),如果b线程里拿取了对象锁(synchronized关键字获取),则等待一秒后也需等线程b释放对象锁

2.接口中默认修饰变量属性用:public static final
为什么是public:因为接口必然是要被实现的,如果不是public,这个属性就没有意义了;
为什么是static:static代表着这个东西在内存中只有一份;
为什么是final:这是为了体现java的开闭原则,因为接口是一种模板,既然是模板,那就对修改关闭,对扩展开放。
1)关于String类型已经为final的说法:
1)再加final代表着引用指向也不可改变

3.因为重写的equals()里一般比较的比较全面比较复杂,而hashCode()方法利用比较两个对象的hashcode值效率比较高,但不稳定,两个不同的对象也有可能hashcode值相等
equals()相等的两个对象他们的hashCode()肯定相等,也就是用equals()对比是绝对可靠的。
hashCode()相等的两个对象他们的equal()不一定相等,也就是hashCode()不是绝对可靠的。

4.标准ASCII只使用7个bit,扩展的ASCII使用8个bit。ASCII码包含一些特殊空字符,有些不可打印(ASCII 表上的数字 0–31 分配给了控制字符)

5.TCP协议头中不包含源IP地址和目的IP地址

6.jvm堆分为:新生代(一般是一个Eden区,两个Survivor区),老年代(old区)。常量池属于 PermGen(方法区)

7.PreparedStatement的一个缺点是,我们不能直接用它来执行in条件语句;需要执行IN条件语句的话,下面有一些解决方案:
分别进行单条查询——这样做性能很差,不推荐。
使用存储过程——这取决于数据库的实现,不是所有数据库都支持。
动态生成PreparedStatement——这是个好办法,但是不能享受PreparedStatement的缓存带来的好处了。
在PreparedStatement查询中使用NULL值——如果你知道输入变量的最大个数的话,这是个不错的办法,扩展一下还可以支持无限参数

8.序列化:
1. 在序列化的时候,被transient或者static修饰的属性,不可以序列化。
2. 一个类可以被序列化,那么它的子类也可以被序列化。
3. 序列化可以实现深复制,而Object中的clone实现的就只是浅复制。

9.正则中:
\d:匹配数字,\D:匹配非数字

10.finally一定会在return之前执行,但是如果finally使用了return或者throw语句,将会使trycatch中的return或者throw失效

11. 重写和重载
静态方法,不存在重写,重写只对可见的实例方法有效。静态方法只有隐藏。所以在父子类中存在相同的静态方法时算重载
重载则是根据形参的静态类型确定调用的方法版本,重写是根据调用者在运行期的实际类型来确定调用的方法版本。

12.concat()方法,返回连接后的数组或字符串对象,本身并不会发生变化
join()方法,能将数组或集合中的值按指定方式连接,返回字符串

13.
500:服务器内部报错,无法完成请求
501:服务器不支持实现请求所需要的功能,简称服务器不支持请求
400:请求语法格式错误,参数啥的,服务器无法理解请求
401:用户没有访问权限,需要进行身份认证。
403:服务器拒绝请求,服务器上文件操作权限设置导致,或者是没有权限访问
404:找不到请求的页面

14.SVG是一种用XML定义的语言,用来描述二维矢量及矢量/栅格图形。SVG提供了3种类型的图形对象:矢量图形(vectorgraphicshape例如:由直线和曲线组成的路径)、图象(image)、文本(text)。
图形对象还可进行分组、添加样式、变换、组合等操作,特征集包括嵌套变换(nestedtransformations)、剪切路径(clippingpaths)、alpha蒙板(alphamasks)、滤镜效果(filtereffects)、模板对象(templateobjects)和其它扩展(extensibility)。
严格意义上不属于html标签元素中的一种

15.>>带符号右移,>>>不带符号右移,<<带符号左移
<< : 左移运算符,num << 1,相当于num乘以2

>> : 右移运算符,num >> 1,相当于num除以2

>>>: 无符号右移,忽略符号位,符号位不动 , 空位都以0补齐

16.Java异常的基类为java.lang.Throwable,java.lang.Exception和java.lang.Error继承于该类。
1)运行时异常可以不被申明,比如抛出啥的,它由jvm自行处理,比如空指针异常和数组越界异常等

17.oom中的:(jmap)
1)内存泄露 和 无用当资源无法回收
2)并发量大
3)创建了一个很大的对象

18.oom异常的解决方法:
1)将堆内存dump下来
2)简单粗暴:加大堆内存
1.分布式服务
3)多线程加载对象

19.辗转相除法是以除数和余数反复做除法运算

20.servlet如何获取用户配置的初始化参数:
1)getInitParameterr(java.lang.Stringname)
服务器上下文参数:
1)servlet的ServletConfig对象拥有该servlet的ServletContext的一个引用,所以可这样取得上下文初始化参数:getServletConfig().getServletContext().getInitParameter()
2)也可以在servlet中直接调用getServletContext().getInitParameter()

21.NOSCRIPT标签用来定义在脚本未被执行时的替代内容

22.+运算符优先级高于三目运算符,
console.log('Value is ' + (val != '0') ? 'define' : 'undefine');
所以无论如何非空字符串boolean转换都为true

23.link标签是同时加载的(引入css) script标签才会加载完一个再加载另一个(引入js)
加载和解析是两个概念,css中加载是并行的,解析是顺序的,后面的css属性会覆盖前面的

24.数组的定义:
1. 定义一维数组时,必须显式指明数组的长度;
2. 定义***数组时,其一维数组的长度必须首先指明,其他维数组长度可以稍后指定;
3. 采用给定值初始化数组时,不必指明长度;
4. “[]” 是数组运算符的意思,在声明一个数组时,数组运算符可以放在数据类型与变量之间,也可以放在变量之后。

25.JavaScript RegExp 对象有3个方法:test()、exec()、compile()
test():检测一个字符串是否匹配某个正则表达式,如果匹配成功,返回true,否则返回false;
exec():检索字符串中与正则表达式匹配的值,返回一个数组,存放匹配的结果;如果未找到,返回null;
compile():可以在脚本执行过程中编译正则表达式,也可以改变已有表达式。
注:match是支持正则表达式的String对象的方法

26.redis一共包含5种数据类型
字符串 String (最基本的类型,可包含任意数据)
哈希 Hash (String类型的field、value映射表)
列表 List (字符串列表,有序不唯一)
集合 set (字符串集合,无序唯一)
集合排序 zset (字符串集合,可以通过设置分数score进行排序)

27.数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作。 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。
通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性。

28.ping是使用的ICMP协议,是IP层协议,但是端口是应用层的,所以它只能判断能够访问ip,不能判断端口,telnet是应用层的,可以判端口访问情况

29.关于集合常见面试题的总结:
https://blog.csdn.net/striveb/article/details/82593768

30.进程是系统进行资源分配和调度的基本单位,而线程是CPU调度和分配的基本单位,一个进程中的多个线程共享资源,一个线程可以创建和撤销另一个线程

猜你喜欢

转载自www.cnblogs.com/nyhhd/p/12670056.html