疫情期间面两个月(我的面试总结)
本帖最后由 三木猿 于 2020-9-4 14:00 编辑疫情期间找工作,我也是吐了呀,有多难受可以想象,面试的时候,问题都能答上来,不顶用!你不只是要答上来,还要答得详细,答得有特点,不要怕面试有不会的怎么办,不会很正常,但是该会的你必须搞懂,搞透彻,再强调一次框架不重要,学一个框架用不了多久,重要的是基础,就这。基础不行,啥也不是!!另附一套选择题,你要是全会了,面阿里都没毛病
[*]Mycat的三个配置文件
(1) server.xml,schema.xml,rule.xml
[*]Tcp协议
(1) 三次握手
① 第一次客户端发送SYN=1,和随机生成的seq=J,同时客户端状态变为请求连接状态
② 第二次握手服务器端收到SYN=1知道了客户端在请求连接,就再生成一个seq=k,ACK=j+1,SYN=1,然后服务器端状态变为同步收到状态。
③ 第三次握手客户端收到ACK=j+1,seq=k后再次向服务器端传递ACK=k+1,然后客户端和服务器端状态都变为正在连接状态。
(2) 四次挥手
[*]Jdk8新特性
(1) 在interface中可以写非抽象方法,只需要在方法前面加上default就可以,这样在该接口的实现类上就可以直接调用这个方法。
[*]SQL优化
(1) Like %在前面会全表扫描
(2) 在表中建立索引,优先考虑where、group by使用到的字段。
(3) 尽量避免使用select *,返回无用的字段会降低查询效率
(4) 尽量避免使用in 和not in,会导致数据库引擎放弃索引进行全表扫描
(5) 尽量避免使用or,会导致数据库引擎放弃索引进行全表扫描
(6) 尽量避免在字段开头模糊查询(后面就没事),会导致数据库引擎放弃索引进行全表扫描
(7) 尽量避免进行null值的判断,会导致数据库引擎放弃索引进行全表扫描
[*]GC垃圾回收分两个代()
(1) Eden区和两个幸存者区默认比例为8:1:1
(2) Minor GC或YGC即年轻代GC,当new出来的对象不被其他对象引用时,就会被从内存中清除。发生YGC后没被清除的将会放到幸存者区
① 年轻代又分为三个区域,分别是Eden区和两个幸存者区(from和to)
② 在发生第一次GC前to中是没有东西的,第一次GC后,存活年龄达到阈值的会进入年老代,同时没有达到阈值的会被复制到to中,然后eden区和from区会被清空,之后原来的to在有内容后变成from区, 而原来的from区则变为to区,每一次发生GC from和to都会交换,如果GC后to区满了,那么to区中所有的对象都会被移动到年老代
(3) 在发生多次YGC还没被清除的就会被放到年老区。
(4) 当年老区被放满时将会发生majorGC又称FullGC
(5) FullGC发生时会清理整个堆中的GC(包括年轻代和年老代)
[*]mybatis-plus的用法
[*]mybatis动态sql是什么,有那些?有什么好处?
[*]什么是触发器?
[*]springMVC三个层的注解?
(1) @Controller @service @Repository
[*]Springboot关闭自动配置exclude参数
[*]@SpringbootApplication的原理
(1) @ComponentScan 用于类或接口上主要是指定扫描路径,spring会把指定路径下带有指定注解的类自动装配到bean容器里。
(2) @EnableAutoConfiguration 用于自动配置
(3) @springBootConfiguration 继承自@Configuration,二者功能也一致,标注当前类是配置类,并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到spring容器中,并且实例名就是方法名
[*]乐观锁和悲观锁的实现方式
(1) Mysql版本号机制
在数据表中添加version字段,修改数据之前先读取版本号
比如当前版本是1,A和B获取到version=1,此时更新,那A和B的更新条件都为“version = 1”,如果A先提交了,此时表中该条数据version已经被A更新为2,B再提交,发现不满足“version=1”,所以无法更新,排他异常。
(2) JavaCAS来实现---这个不是太懂,所以没法说出来
(3) Mysql使用悲观锁需要先把事务的自动提交关闭,然后用select 。。。for update,
(4)Java中悲观锁即使用synchronized。
[*]什么是线程安全
(1) 就是线程同步的意思,也就是说一个程序对一个线程安全的方法或语句进行访问的时候,其他线程必须等该线程访问完才能继续访问该方法。
[*]线程死锁问题
(1) 一个线程因为一些原因无法释放锁,导致资源被一直占用。 (2) 让线程的执行按特定的顺序执行当几个线程都要访问共享资源A、B、C时,保证使每个线程都按照同样的顺序去访问它们,比如都先访问A,在访问B和C
[*]说一下jmm内存模型
(1) Jmm中有主内存,工作内存,和线程,每个线程中都包含自己的工作内存,工作内存中放的是主内存中的共享变量的副本。
[*]说一下JVM虚拟机内存模型
(1) 什么是堆:一些基本类型的变量和对象的引用变量 (2) 什么是栈:存放变量所指向的对象程序计数器是用来存放线程执行的下一个指令的字节码,是为了保证线程的连续执行。 不喜勿喷,别找存在感,我又没求着你看,我帖子上写的是我面试初期整理的,只把这些搞懂当然面不上大公司啦,我说的是把题库搞懂,里面至少有几千道题,涉及很全面
部分截图
保存了,晚上看看{:301_998:} 看完就去面阿里试试是不是真的 真的假的哦{:1_918:} 东风飘兮 发表于 2020-9-4 14:16
看完就去面阿里试试是不是真的
题很多,这个题几乎包括了所有知识点,都会了还能没信心去面吗,不过我是看不完,太多啦 先回复,在保存,然后研究 下载下来看一看, 支持一下 我信你个鬼 先马克吧,无论有没有用,谢谢分享