面试所遇到的问题

面试所遇到的问题

1.自我介绍
2. 算法题(树的镜像,排序,二叉树的排序);
3. 怎样做到线程安全;
多个线程使用了同一个对象,使得在页面上产生的结果与预计的不一样,称为是临界资源或者共享资源。也可以这么说,多个线程使用一个对象,产生的结果与每一个线程单独使用一个对象产生的结果不一样。一般来说,基本上所有线程访问同一资源时,采取的操作是序列化访问共享资源,使用了两种方式,分别为synchronized和Lock去防止线程不安全。
在java中,每一个对象都有一个锁标签,称为monitor,监视器,所有线程去访问同一资源时,需要先获得对象的锁才可以访问。synchronized可以用来修饰方法和代码块。当某个线程调用对象的synchronized方法和访问synchronized方法时,必须要先获得对象的锁才可以继续访问,当该线程获得锁时,其他线程暂时无法访问这个方法,只有等待这个方法执行完毕或者代码块执行完毕,这个线程才会释放该对象的锁,其他线程才能执行这个方法或者代码块。
Lock是一个接口,而synchronized是Java中的关键字,synchronized是内置的语言实现;
synchronized在发生异常时,会自动释放线程占有的锁,因此不会导致死锁现象发生;而Lock在发生异常时,如果没有主动通过unLock()去释放锁,则很可能造成死锁现象,因此使用Lock时需要在finally块中释放锁;
Lock可以让等待锁的线程响应中断,而synchronized却不行,使用synchronized时,等待的线程会一直等待下去,不能够响应中断;
通过Lock可以知道有没有成功获取锁,而synchronized却无法办到。
Lock可以提高多个线程进行读操作的效率。
4. 大概了解java中的哪些注解,以及讲一讲注解所代表的意思;
5. 数据库的DML,inner join、left join和right join的区别;
6. 讲一讲你项目中所遇到让你感觉最大的问题;
7. python中的数组底层;
8. 讲一讲你自己做的这一段python算法有什么含义;
9. 数据库中怎么解决事务的脏读,不可重复读等现象;
10.讲一下你所做的项目;
10. Java中list和ArrayList的区别;
java中List和ArrayList的区别如下:
List是接口,List特性就是有序,会确保以一定的顺序保存元素.
ArrayList是它的实现类,是一个用数组实现的List。
使用方法:
比如:List list = new ArrayList();
这样做的原因是list就相当于是一个泛型的实现,如果想改变list的类型,只需要:
List list = new LinkedList();//LinkedList也是List的实现类,也是ArrayList的兄弟类
11. 你项目中所使用过哪个设计模式,或者说讲一讲你所知道的设计模式;
12. 数据库中的锁的含义;
在数据库当中,其实也是如此,锁的概念就是事务访问的一个屏障,当一个事务对当前系统提出加锁的时候(加锁的对象可以是行,表,数据库),其他事务必须等此事务解锁之后才能进行访问。用生活的例子来进行解释就是:住在农村的家里面都有一个院子,院子的大门是栅栏样式的那种,我出门前把门锁了,其他人就不能进去,除非我把门打开了。当然,我也可以只锁每个屋子的门。
常见的锁分为排他锁(x锁)和共享锁(s锁)。他们的区别如下:
排他锁:根据字面意义来理解的话,x锁就是排除别的事务,只能有一个事务来修改和操作该数据。
共享锁:S锁,是事务T对数据A加上S锁时,其他事务只能再对数据A加S锁,而不能加X锁,直到T释放A上的S锁。
13. Java怎么解析json格式的数据;
传统的方式是用JsonObejct和JsonArray,还有其他三种方式Jackson、Gson和fastjson
json是目前主流的前后端数据传输方式,spring mvc是使用了消息转换器httpMessageConvert对json的转换提供了更好的支持。
14. 项目的背景;
15. 你对测试的理解(五大测试);
16. java中的堆是先进先出还是先进后出的,讲一下原理;
17. 编辑错误和运行错误的区别;
18. 多态的含义;
19. 设计模式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小猿胖来了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值