您的位置:首页 > 职场人生

JAVA高级工程师面试宝典——并发和安全方面(六)

2019-03-07 19:24 330 查看
版权声明:南山浪子 https://blog.csdn.net/lch520baby/article/details/88252863

六、并发和安全方面

1.说说线程安全的几种实现方式?

答:什么是线程安全? 我的理解是这样的,一个对象被多个线程同时访问,还能保持其内部属性的顺序性及同步性,则认定为线程安全。实现线程安全的三种方式:被volatile、synchronized等关键字修饰,或者使用java.util.concurrent下面的类库。

(1)从而我们可以看出volatile虽然具有可见性但是并不能保证原子性。

(2)性能方面,synchronized关键字是防止多个线程同时执行一段代码,就会影响程序执行效率,而volatile关键字在某些情况下性能要优于synchronized。

但是要注意volatile关键字是无法替代synchronized关键字的,因为volatile关键字无法保证操作的原子性。

 

2.方法内部,如何实现更好的异步?

答:我们知道异步其实就是让另一个线程去跑,那么如何创建线程?  第一种直接new Thread ,第二种new 一个实现Runnable接口的实现类。 第三种,通过线程池来管理创建等 ,这里说到更好的实现异步,那就是说我们在方法内部避免频繁的new 线程,就可以考虑线程池了。 那么线程池如何创建? 这里可以new 一个线程池,但是需要考虑单例,或者在程序初始启东时,就创建一个线程池,让他跑着,然后在具体方法的时候,通过线程池来创建线程,实现异步

 

3.项目并发如何处理?(我们是web项目)

答:1.HTML静态化;2.图片服务器分离;3.数据库集群、库表散列;4.缓存;5.镜像;6.负载均衡;7.CDN加速技术;8.数据库乐观锁,数据库读写分离、使用消息队列、多用存储过程等

 

4.简单说说功能权限存在的水平权限漏洞和垂直权限漏洞的场景和解决办法(因为我们目前权限级别就是功能权限)

 

5.平台上的图片如何防盗链

答:http标准协议中有专门的字段记录referer,一来可以追溯上一个入站地址是什么

 二来对于资源文件,可以跟踪到包含显示他的网页地址是什么。

 

 

6.如何区分上传的图片是不是木马?

答:1、看上传的图片后缀  2、如果后缀是篡改的,那么每个文件有个魔术数字 

 

 

7.消息队列的原理和实现

答:消息队列技术是分布式应用间交换信息的一种技术。消息队列可驻留在内存或磁盘上,队列存储消息直到它们被应用程序读走。通过消息队列,应用程序可独立地执行--它们不需要知道彼此的位置、或在继续执行前不需要等待接收程序接收此消息。

 

 

------------------------------------------------------------------------------

上一篇:JAVA高级工程师面试宝典——项目优化相关(五)

下一篇:JAVA高级工程师面试宝典——数据库方面(七)

------------------------------------------------------------------------------
 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: