面试问题总结

项目经验

1.主流技术框架必须包括的,SSM,缓存,MQ,微服务。

2.复杂业务,简单的CRUD也可以,面试初级程序员就可以的,但是高级就不可以了。

3.并发多线程场景,这是加分项,spring线程池的使用,多线程什么场景里用,说的清楚。

4.第三方接口调用,如调用银行接口,里面关于异常怎么定义啊,失败机制,重试机制,幂等机制。

5.代码的优雅设计,项目中用了模块,单例,高级泛型,异常设计,日志,拦截器,自定义注释,枚举高级特性。

6.java8新特性,如java流式语法的好处,常见的方法。

多线程同步的实现方式

synchroized关键字

同步方法:

即有synchroized关键字修饰的方法。由于java的每个对象都有一个内置锁,当用此关键字修饰方法时,内置锁会保护整个方法。在调用该方法前,需要获得内置锁,否则就处于阻塞状态。

synchronized【锁】总结

  • 方法里 static synchronized 和 synchronized(类)都是锁所有类,非 static synchronized 和 synchronized(this)都是锁对象

  • 记住锁的不是代码,而是对象【类就是所有对象】

  • 【关键点】能不能同时执行,只要看锁获得的是哪个对象就行,其他需要这个锁的方法都不能同时执行,不需要这个锁的方法都能同时执行。

  • 只有锁同一个对象才行。

hashcode作用

pass

error和exception有什么区别

Error:程序无法处理的系统错误,编译器不做检查。

Error表示系统致命的错误,程序没法处理。

一般是与JVM相关的问题,如系统崩溃,内存溢出,方法调用栈溢出等,如:经常遇到的StackOverflowError、OutOfMemoryError。

这种类型的错误,编译器不做检查,都是系统运行过程中发生的。

这些错误靠我们程序本身是无法处理与预防的,遇到了建议直接程序中止、重启。 

Exception:程序可以处理的异常,捕获后可处理。

Exception异常是程序能够捕获的,也可以做异常处理,

我们要尽可能的去处理,使程序继续运行,而不是中止程序。

总结一下就是Error是程序无法处理的错误,Exception是可以处理的异常。

redis实际项目应用

如何解决Redis缓存与MySQL数据一致性的问题?

如何利用Redis锁解决高并发问题?

springAOP项目中的实际应用

建议从项目中的事务注解讲起

如果项目有实际应用的AOP自定义注解更好,

没有也不要慌把spring自带的事务注解讲明白也可以

面试官主要考察有没有AOP的思想,

实际项目中AOP应用太广泛了   日志,权限,事务等等都可以利用AOP去完成统一设计.

mysql索引失效和创建原则

良心文章-SQL优化(好文章希望更多人能学到)

解决什么生产问题

你先要熟悉linux基本命令,(传送门    linux之解决生产问题必备命令「日志快速定位分析」

排查日志你首先要知道关键字,比如产品ID等等ID,

命令

      | 

     搜索关键字

         |

        定位到日志信息log

             |

           看堆栈信息

                      |

                      分析具体异常原因(结合你实际问题场景)

如果是分布式系统,有一个关键字叫traceId (非常强大)

 

 

 

 

 

 

 

 

 

posted @ 2019-11-07 19:52  同窗的海生  阅读(120)  评论(0编辑  收藏  举报