建信金融科技开发一面

1、自我介绍和项目介绍
2、你怎么理解的springboot?
设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。
Spring Boot 和微服务没关系, Java 微服务治理框架普遍用的是 Spring Cloud。
3、springboot如何进行的自动配置?
在spring程序main方法中 添加@SpringBootApplication或者@EnableAutoConfiguration
会自动去maven中读取每个starter中的spring.factories文件,该文件里配置了所有需要被创建spring容器中的bean。
4.@resource和@component的区别?
Resource是j2ee的内容,如果要使用注解@Resource,必须引入jar文件common-annotations.jar。@Resource注解在set方法上,默认是通过ByType形式进行注入。也可以通过ByName指定bean。@Component是Spring本身包含的功能,无需引入其它额外的jar文件。
5.springboot的事务是怎么实现的?
在一个类或者一个方法上使用 @Transactional 注解,在一个配置类上加入一个 @EnableTransactionManagement 注解代表启动事务。
6.springboot的事务怎么实现异常回滚的?
在Spring中TransactionInterceptor和PlatformTransactionManager这两个类是整个事务模块的核心,TransactionInterceptor负责拦截方法执行,进行判断是否需要提交或者回滚事务。PlatformTransactionManager是Spring 中的事务管理接口,真正定义了事务如何回滚和提交。
7.springboot的controller是线程安全的吗?
是单例模式多线程安全的。若每个线程中对静态变量(类变量)、实例变量(对象变量)只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑线程同步,否则就可能影响线程安全。成员变量(实例变量和类变量)会受到多线程影响,对于成员变量的操作,可以使用ThreadLocal来保证线程安全。
8.讲一讲springAOP
在每次运行时生成AOP动态代理对象。AOP不会去修改字节码,而是在内存中临时为方法生成一个AOP对象。这个AOP对象包含了目标对象的全部防范,并在特定的切点做了增强处理,回调原对象。
SPRING AOP有两种动态代理方式,JDK和CGLIB。JDK动态代理通过反射来接收被代理的类,并要求代理的类必须实现一个接口。CGLIB是一个代码生成的类库,可以在运行时动态的生成某个类的子类,通过继承的方式做动态代理,若是final类,则不能被CGLIB代理。
9.数据库的死锁?场景举例
多数情况下,可以认为如果一个资源被锁定,它总会在以后某个时间被释放。而死锁发生在当多个进程访问同一数据库时,其中每个进程拥有的锁都是其他进程所需的,由此造成每个进程都无法继续下去。简单的说,进程A等待进程B释放他的资源,B又等待A释放他的资源,这样就互相等待就形成死锁。
10.遇到过哪些反爬策略?
BAN IP:网页的运维人员通过分析日志发现最近某一个IP访问量特别特别大,某一段时间内访问了无数次的网页,则运维人员判断此种访问行为并非正常人的行为,于是直接在服务器上封杀了此人IP。
解决方法:此种方法极其容易误伤其他正常用户,因为某一片区域的其他用户可能有着相同的IP,导致服务器少了许多正常用户的访问,所以一般运维人员不会通过此种方法来限制爬虫。不过面对许多大量的访问,服务器还是会偶尔把该IP放入黑名单,过一段时间再将其放出来,但我们可以通过分布式爬虫以及购买代理IP也能很好的解决,只不过爬虫的成本提高了。
验证码验证:当某一用户访问次数过多后,就自动让请求跳转到一个验证码页面,只有在输入正确的验证码之后才能继续访问网站
解决办法:python可以通过一些第三方库如(pytesser,PIL)来对验证码进行处理,识别出正确的验证码,复杂的验证码可以通过机器学习让爬虫自动识别复杂验证码,让程序自动识别验证码并自动输入验证码继续抓取。
11.反问

全部评论

相关推荐

07-02 13:52
武汉大学 golang
骗你的不露头也秒
牛客87776816...:😃查看图片
点赞 评论 收藏
分享
fRank1e:吓得我不敢去外包了,但是目前也只有外包这一个实习,我还要继续去吗
点赞 评论 收藏
分享
评论
1
5
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务