经验总结-1

这是我的第一个面试,算是比较正式的一次面试吧,以下是被问到的一些问题和收获到的经验。

一面

一面比较基础,问了==与equals的区别,String a="a"与new String(“a”)区别,HashMap不初识容量的有什么影响,集合怎么去重,sql索引失效的几种情况,sql注入,事务隔离级别,基本类型等。图片在服务器中怎么被访问到?

mybatis问了#{}与${}的区别,mybatis-plus的基本主键策略生成。

二面

一开始就问了多线程的问题,我解释了进程与线程,讲了创建线程的方式,接着问了多线程的使用场景,没答好,因为确实项目中写的少,遇见的场景比较少。使用多线程应该注意什么?

然后问了sql优化,我大概说了一些方法,然后立即让我创建一张用户表,手写sql语句,这个当然没那么简单,但是我只想到了主键、唯一键,但是对于字段就用了varchar,面试官直说了一句了解,没有多说。

问了GC,GC我说了几种算法,但是有问了GC的具体经验,这个确实也遇见的少,没答好。

综上总结:

  • 在类似创建表的题目中,考察的是对表的字段思考,例如:密码字段,密码一般是存储的加密后的,那么那些电话号码,邮箱,这些信息也变也要进行加密,所以长度一般要大一些一般的加密算法长度为64,用户名要设置唯一unique索引,id设置主键索引,还要考虑要不要自增情况等。如果没有提到约束的话,自己也可以给面试官进行补充,例如用户名不能为null,不可以是非法字符等,面试官之所以没说也可能就是让我们进行补充,因为一个sql建表语句应该都会写,考就是考一个考虑问题的全面性。
  • 线程的场景,可以想一下定时任务,例如以前的做的小游戏,里面的定时线程等,或者定时删除文件、更新数据库或redis等、生产者消费者问题等。使用多线程应该注意什么?这个问题我面试完思考了一下,可以从避免死锁的方向说,使用线程锁等,也可以说说自己使用的方面如集合中使用juc包下的集合等,还有可以使用线程池,顺便说下线程池的好处。可以这样说:线程之间共用进程所有资源,当多线程操作同一个变量的时候,可能会使得结果不正确。因此要特别注意线程安全的问题。通常保证线程安全有很多种方式:1. 使用线程锁 2.使用串行队列 3. 使用线程安全的类 4. 使用线程池等……
  • 死锁的场景,例如在转账时,拿到第一个用户,准备给第二个用户进行转账,此时正好,有别的线程也正拿着这个账户,那么转账是不成功,就是死锁状态,解决办法,让转账的线程串行化,加锁。
  • GC经验真的不太熟悉,但是可以说说知道的调优参数,包括设置完参数后出现的情况等,还有例如idea中的配置文件对于jvm参数的设置,其实也属于GC范围。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值