初级开发的面经

问 java8特性有哪些知道吗

知道的都写了, lamdba,stream,函数式接口,大概就这些吧

就这些吗,如何获取方法的参数名以及类型呢

反射吧,反射可以拿到这些信息,还能获取参数值 ### 不对

java8有个特性可以获取,你回头可以了解, 问了也不说

那接口和抽象类有什么区别呢,java8有变化吗

接口新增了default默认方法.接口和抽象类的区别大概就是属性是否存在默认值把,现在接口和抽象类都有自己的方法了.

threadLocal了解吗

项目用到了,这是个可以在线程对象里存储信息的类

threadLocal和redis有什么区别呢

区别应该不大,threadLocal是存储在元数据里,不占用jvm内存,redis也是

redis的数据只能存储到内存里面吗

可以持久化

redis的数据接口你用过什么

string和hashmap

就这些?redis有string,list,set,hashmap这些数据结构,那你知道redis如何排序?命令是什么吗?

这个不太了解,项目没有用到这个

好吧,看你写了函数式接口,都是些什么

function,consumer,supplier,等这些接口,主要用于方法参数传递函数,项目会有些公共方法但是这些公共方法只能做相同的事情,利用函数,可以针对于不同的地方,做不同的事情.

那lamdba呢,平常用什么

一般都是结合函数式接口来用,或者是简化代码.

循环呢,lamdba的循环为什么不用

foreach不太好,不支持for循环的break,

反射呢,怎么用的

反射呢,用的地方也挺多,aop会用到,获取参数,项目里有个字典转化工具类,就是使用反射来写的,对对象进行赋值,获取值操作

关于springmvc,和springboot区别有哪些

配置一个是xml一个是简化配置,还有就是mvc是前后端一体化,结合模板使用.

关于spring的ioc了解吗

这个是控制反转,其实就是通过注解方式注入类,spring可以根据类的上下级关系,决定优先注入那个类,这些类都是单例的

这个类只能是单例的吗

应该是把,如果不是单例,其实管理的意义也不是太大了

那spring 的bean作用域呢?

不太了解你说的什么,不清楚

spring对类有单例模式啊这些

哦哦,你说的是指定管理类是多例还是单例把,一个singlton还有一个是prototype,

对就是这个,这个就是bean作用域

那spring如果bean是互相引用的,两两引用或者是三个互相引用了,spring可以这么吗,怎么处理这个

是可以的,但是如何处理的,spring的不太知道,没有去了解

spring提供的配置类或者接口用过那些

拦截器把,用的是最广泛的.

说到模板,你用过那些

jsp,freamarker,thymeleaf

那有个场景,有index.jsp,index.html,index.tkl.我返回一个index,那怎么知道是该找谁呢

这个需要写配置,在尾部添加.jsp那就是寻找jsp

那我能不能多模板切换,

不太了解,我可以动态切换模板引擎吗

呵呵,这个我目前的技术,还无法实现这个功能呢

那我不太了解了

看到你写了mybatis和jpa,项目都用到了吗

都一起用了,不过jpa,只是用到了注解方式的sql

这个还一起用?

项目不是我设计的

你这springcloud全家桶都用到了,说下你们的身份认证是怎么做的呢

首先,有两个token,前端拿到的jwt令牌,jwt令牌在网关进行认证,然后解析生成token,负责微服务之间使用.

还可以,网关能干什么

可以负责负载均衡,这是自带的功能,也可以做拦截

微服务你们是怎么内部调用的呢

我们用的是feign,因为微服务也有拦截器,还用feign请求拦截器,手动添加token.

可以,nginx你知道能干什么呢,会用吗,linux的命令有哪些

nginx -c,nginx start,stop,reload,目前就用到了这些命令,nginx可以转发,资源共享,redis转发,流媒体服务转发,负载均衡.

那nginx启动,需要使用什么身份

这个可以在配置文件指定用户

ws了解吗,有那些java的ws服务框架

有tomcat的服务,使用注解方式,还有spring 的,不过spring 的只能提供一个控制器.

那你项目用的是?为什么用它

用的注解方式的,也就是tomcat的,之所以用它,是因为一个客户端实例,就是单例的注解类实例,这样便于开发,管理.spring只有一个控制器,使用起来没有tomcat的好

你们用swagger接口对接,还知道那些

还有个smart开头的,其余的不知道了.

那好,rabbitmq呢,了解吗,讲一下

rabbitmq用的是升级的ampq协议,这是个队列,为了让消息有唯一性,在rabbitmq服务端,每个消息有个自己的msgId,保证消息唯一,在客户端,接收到消息,会进行回执操作,保证了消息不丢失.同样的,rabbit对消息进行了持久化.将信息保存到了磁盘

oracle,sql优化你会吗?

我只会一些基础的sql层面的优化,或者是逻辑优化.(原来还存在高级的sql优化)

java 的设计模式呢,知道那些?

这个,单例模式,工厂模式,其它的,不太有印象了,你说几个我如果知道可以给你解释下

这个,我觉得应该是开发的时候,先有思想,才会开发出代码把.

关于线程池有几种

有定时任务的,缓存的,fix不可变的,还有个忘记了,大概有四种把

一共是几种

四种

为什么要用线程池?

这个,主要是避免了线程的重复创建,销毁, 还有一个就是处理复杂任务,有助于管理.

我们要做一个自己生态化的商城,下一步首先要把商城做出来,说下你对商城的看法, 规划

商城公司没怎么做过,我知道注意商品库存问题,sku,spu商品规格,关于秒杀时候的操作,比如使用redis减轻数据库的压力把,

限流呢

限流可以在网关做,nginx也可以做负载均衡

关于redis,hashmap不是线程安全的这个你应该知道,那么,如果做到数据同步呢,

不太了解,但是可以增加日志来记录

说到日志,你怎么处理,很大的用户量,日志又怎么存储呢

可以存到数据库,数据量大,首先可以压缩数据,单个用户多数据压缩成一个json存到数据库把,或者建立备份表存储

这样不太行,那系统日志呢,我们可以使用文件存储啊,用户也可以这样的.你们运维是怎么做到数据备份,数据库分库呢

这个我们有单独的运维来做数据库的存储这些事情,我没有接触过,我知道的大概就是orcale只能分表空间