20200115——java最常见200+面试题 一

final的作用
1)final修饰的类叫最终类,该类不能被继承
2)final修饰的方法不能被重写
3)final修饰的变量叫常量,必须进行初始化,初始化之后就不能被修改


Java中操作字符串都有哪些类,它们之间有什么区别
String StringBuilder StringBuffer
String声明的是不可变的对象,每次操作都会生成新的String对象。StringBuilder与StringBuffer可以在原有对象的基础上进行操作,所以经常修改字符串内容的情况下最好不要使用String。
StringBuffer是线程安全的,StringBuilder是非线程安全的,但StringBuilder的性能却高于StringBuffer,所以在单线程环境下使用StringBuilder,多线程使用StringBuffer。


java中的容器
在这里插入图片描述
java容器通常的两种不同的数据结构,一种是Collections,另一种是Map
java的主要容器就是Collections Set List Map


HashMap与HashTable
存储:HashMap允许Key和value为null,HashTable不允许
线程安全:HashTable是线程安全的,而HashMap是非线程安全的


HashMap的实现原理
HashMap基于Hash算法实现的,我们通过put(key,value)存储,get(key)来获取,当传入key,hashmap会根据key.hashCode()计算出hash值,根据hash值将value保存在bucket中,当计算出的hash值相同时,我们称之为hash冲突,HashMap的做法是用链表和红黑树存储相同hash值的value,当hash冲突的个数比较少,使用链表否则使用红黑树


ArrayList和LinkedList的区别是什么
数据结构实现:ArrayList是动态数组的数据结构实现,而LinkedList是双向链表数据结构实现
随机访问效率:ArrayList随机访问效率高,只需要随机取一个下标即可。
增加和删除效率:LinkedList高,链表操作高。


并行和并发有什么区别
并行:多个处理器或多核处理器同时处理多个任务
并发:多个任务在同一个cpu上,按细分的时间片轮流(交替)执行,从逻辑上看那些任务是同时执行。


线程和进程的区别
一个程序只少有一个进程,一个进程至少有一个线程,一个进程也可以拥有多个线程。


创建线程的方法
继承Thread重写run方法
实现Runnable接口
实现Callable接口


线程的状态
new 尚未启动
runnable 正在执行中
blocked 阻塞的
waiting 永久等待状态
timed_waiting 等待指定的时间重新被唤醒的状态
terminated 执行完成


** 在java程序中怎么保证多线程的运行安全**
1)使用安全类 java.util.concurrent下的类
2)使用自动锁synchronized
3)使用手动锁lock


反射
反射是在运行中,对于任意一个类,都能知道这个类的所有属性和方法,对于任意的一个对象,都能够调用它的任意的一个方法和属性,这种获取的信息以及动态调用对象的方法的功能称为java语言的反射。


java序列化
java序列化是为了保存各种对象在内存中的状态,并且可以把保存的对象在读出来。
一下情况需要用到java序列化
想把内存中的对象保存到一个文件中或者数据库中时候
想用套接字在网络上传送对象的时候
想通过RMI 远程方法调用传输对象的时候


动态代理
jdk原生动态代理和cglib动态代理,jdk原生代理是基于接口实现的,cglib是通过基于继承当前类的子类实现的。


如何避免sql语句的注入
1)使用预处理preparedstatement
2)使用正则表达式过滤掉字符中的特殊字符


CSRF攻击
cross-site request forgery 跨站请求伪造,可以理解为攻盗者用了你的身份,以你的名义发送恶意请求
防御手段:
验证请求来源地址
关键操作添加验证码
在请求地址添加token验证码


osi七层模型
物理层:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输
数据链路层:负责建立和管理节点间的链路
网络层:通过路由算法,为报文或分组通过子网选择最适当的路径
传输层:向用户提供可靠的端到端的差错和流量控制,保证报文的正确传输
会话层:向两个实体的表示层提供建立和使用连接的方法
表示层:处理用户信息的表示问题,如编码、数据格式转换和加密等
应用层:直接向用户提供服务,完成用户希望在网络上完成的各种工作。


get与post区别
get请求会被浏览器主动缓存,而post不会
get传递参数有大小限制,而post没有
post参数传输更安全,get的参数会明文限制在url上,post不会

发布了657 篇原创文章 · 获赞 39 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/qq_36344771/article/details/103986001