导读:
大家好,我是程序源代码,算算入行的时候我已算入行10以上的老兵了,毕业在北京北漂8年,13年回到省会石家庄,一直就在河北这块土地上生活着。现在人了快到了中年,感觉现在生活压力都比较多大。梦想着有一天能进入大厂,实现一个大厂梦。其实我感觉大家应该和我一样,都想有进入大厂工作毕竟生活需要理想,还需要苟且(挣高工资),其实现在大厂并不是特别容易进,作为一名好多年的Java选手,其实我感觉进入大厂,首先要把自己的技术和面试这两个重要点做好。
最近这几天我一直在看java相关的基础,也在看一些面试相关的资源和视频,其实感觉不管什么技术面试,其实基础是很重要的。现在正好暑假了,天气炎热,作为宅男的我本来就不想出去,所以还不如呆在家里,静下心来好好准备下基础的面试。所以这个暑假(虽然我没有暑假)我准备用60天时间,把Java面试中的面试题看一看,从头复习一遍。计划是每天1-3题的形式学一遍(希望自己能坚持下来)。
主要涵盖的知识点我简单列了一下,计划从这些方面出发进行学:Java基础知识、集合容器、并发编程、JVM、Spring全家桶、MyBatis等ORMapping框架、MySQL数据库、Redis缓存、RabbitMQ消息队列、Linux操作技巧等。
01
—
死锁、如何预防死锁?
1、造成死锁的四个必要条件
1、互斥条件:同一时间只有一个线程获取到资源;
2、不可剥夺条件:一个线程已占有资源,在释放前不会被其它线程占用。
3、请求和保持条件:线程等待过程中不会释放已占有的资源。
4、循环等待条件:多个线程相互等待对方释放资源
2、如何预防死锁?
采用trylock(timeout)方法,设置线程的超时时间,通过程序判断线程主动退出,主动进行判断如果不用资源后释放占有的资源。这样就可以让资源得到释放,从而其它线程就可以去获取资源进行线程操作。就像一个十字口路一样,大家按照指定红绿灯进行通知 ,红灯就暂停下来让别的线程进行操作,别的进程操作完成通过后,绿灯时自己再获取资源进行操作。
02
—
Cookie和 session的区别是什么?
Cookie:是将数据保存到客户端(浏览器);
session:是将数据保存到服务端;一般情况下session用于服务端保存用户状态时使用。相对来说session比cookie更加安全些。因为它不容易通获取到。浏览器经常容易被一些程序进行恶意操作。
一般在实际使用时建议使用session;一般情况下如果涉及到用户的敏感数据信息时,建议通过程序将用户的信息进行加密后,通过session保存到服务端保存下来,不是直接放在浏览器客户端里面。
比如我们在登录验证时,先验证用户名和密码是否一样,如果用户和密码完成符合后将用户session信息保存session中,这样在登录后的一些操作就可以从session获取到用户信息。