1、kafak是做什么的答:一个分布式流平台。应具有的三个功能发布和订阅记录的流,类似于消息队列或者企业级消息系统。以容错的、持久的方式存储记录流当发生时处理记录流。
2、设计模式:面向对象设计的六大原则(绝对详细)单一职责原则开闭原则里氏替换原则依赖倒置原则接口隔离原则迪米特原则
3、你是如何理解微服务的答简介:微服务就是将一个单体架构的应用按业务划分为一个个的独立运行的程序即服务,它们之间通过HTTP协议进行通信(也可以采用消息队列来通信,如RoocketMQ,Kafaka等),可以采用不同的编程语言,使用不同的存储技术,自动化部署(如Jenkins)减少人为控制,降低出错概率。服务数量越多,管理起来越复杂,因此采用集中化管理。例如Eureka,Zookeeper等都是比较常见的服务集中化管理框架。优势:?将复杂的业务拆分成多个小的业务,每个业务拆分成一个服务,将复杂的问题简单化。利于分工,降低新人的学习成本。?微服务系统是分布式系统,业务与业务之间完全解耦,随着业务的增加可以根据业务再拆分,具有极强的横向扩展能力。面对搞并发的场景可以将服务集群化部署,加强系统负载能力。?服务间采用HTTP协议通信,服务与服务之间完全独立。每个服务可以根据业务场景选取合适的编程语言和数据库。?微服务每个服务都是独立部署的,每个服务的修改和部署对其他服务没有影响。缺点:个人感觉维护起来不容易
4、LInux中查询磁盘剩余空间命令df-h
5、简单介绍一下你的工作经历答:吹就好了你们使用的版本控制工具是什么答:git,svn
6、ConcurrentHashMap与HashTable之间线程安全的区别ConcurrentHashMap所使用的锁分段技术,首先将数据分成一段一段的存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中一个段数据时,其他段的数据也能被其他线程访问。
7、什么是IOC(控制反转),DI(依赖注入)答:是一种设计思想,在Java开发中,将你设计好的对象交给容器控制,而不是显示地用代码进行对象的创建。把创建和查找依赖对象的控制权交给IoC容器,由IoC容器进行注入、组合对象。这样对象与对象之间是松耦合、便于测试、功能可复用(减少对象的创建和内存消耗),使得程序的整个体系结构可维护性、灵活性、扩展性变高。DI(DependencyInjection)依赖注入,是IoC容器装配、注入对象的一种方式。通过依赖注入机制,简单的配置即可注入需要的资源,完成自身的业务逻辑,不需要关心资源的出处和具体实现。
8、ssm的注解有哪些@Component(value=“id标识”)@Controller(value=“id标识”)web层@Service(value=“id标识”)service层@Repository(value=“id标识”)dao层@Autowired说明:默认按照类型(接口)从容器中查找对象并注入也可以以属性名作为唯一标识从容器中查找对象并注入@Configuration:声明配置类@ComponentScan:开启包扫描@Import:引入其它的配置类@RequestBody配置到方法参数上,表明将json字符串转化为java对象@ResponseBody配置到方法返回值,表明将对象转化为json字符串@RequestBody配置到方法参数,表明将json字符串转化为对象@SessionAttributes(value={“username”})//代表当前类中的所有方法只要是model对象操作了指定的参数都会向session域中存一份@ModelAttribute(“aaa”)向Model中添加元素@Bean:配置到方法上,表明此方法的返回值交给spring容器管理@RequestMapping("/user")做浏览的访问路径和当前方法的映射@Qualifier(value=“id标识”)Value属性可以按照id唯一标识注入@Value说明:注入基本数据类型数据也可以注入被spring容器管理的properties文件中的内容@Scope说明:对象的作用Value属性(singleton|prototype)@PostConstruct说明:配置到方法上用来配置初始化方法@PreDestory说明:配置到方法上用来配置销毁方法@PropertySource:将properties配置文件交给spring容器管理@RequestHeader获取到请求头的信息@CookieValue获取到cookie的jsessionID
9、spring什么时候创建对象的答:在容器启动时,通过注解声明的对象就会被创建出来。直到项目关闭才结束。
10、sql语句是如何优化的应尽量避免在where子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。应尽量避免在where子句中对字段进行null值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:selectidfromtwherenumisnull可以在num上设置默认值确保表中num列没有null值,然后这样查询:selectidfromtwherenum=0
11、什么是AOP答:举个例子,你想给你的网站加上鉴权,对某些url,你认为不需要鉴权就可以访问,对于某些url,你认为需要有特定权限的用户才能访问,这时候你需要去对访问的url进行相对的过滤,这样就可以采用AOP的方式,把和主业务无关的事情,放到代码外边去做。AOP和oop(面向对象编程)一样也是一种的编程规范。
12、els是怎么使用的答:ElasticSearch是一个分布式,高性能、高可用、可伸缩的搜索和分析系统ES解决了这些问题自动维护数据的分布到多个节点的索引的建立,还有搜索请求分布到多个节点的执行自动维护数据的冗余副本,保证了一旦机器宕机,不会丢失数据封装了更多高级的功能,例如聚合分析的功能,基于地理位置的搜索
13、什么是堆,什么是栈栈(stack)是为执行线程留出的内存空间。当函数(类里边的方法)被调用的时候,栈顶为局部变量和一些bookkeeping数据预留块。当函数执行完毕,块就没有用了,可能在下次的函数调用的时候再被使用。特点:后进先出。堆(heap)是为动态分配预留的内存空间。堆(heap)是为动态分配预留的内存空间。和栈不一样,从堆上分配和重新分配块没有固定模式;你可以在任何时候分配和释放它。
14、mybatis中的foreach标签如何使用SELECTCOUNT(*)FROMusersWHEREuser_idIN#{item.userId}
15、什么是重载、什么是重写重载是指不同的函数使用相同的函数名,但是函数的参数个数或类型不同。调用的时候根据函数的参数来区别不同的函数。覆盖(也叫重写)是指在派生类中重新对基类中的虚函数(注意是虚函数)重新实现。即函数名和参数都一样,只是函数的实现体不一样。
16、ssm框架的流程自己理解一下吧。。。。。不在叙述了。。。。。
17、微服务之间的调用实际上是服务和服务之间的调用,这样的话很容易出现问题为什么我们还是需要去做微服务在项目结构比较大的情况下,我们如果将所有的模块都部署在一个容器中的话可能会导致项目卡死,因此将他们查分开来,还有如果在A项目B项目中都使用了A项目中的一个公共模块,这样在构建B项目的情况下需要重新构建公共模块,在分布式的情况下实际上是可以共享着一个模块减少的代码重复量(非标准答案仅供参考)
18、echarts的版本答:引用的是echarts.min.js
19、mybatis传递的批量参数是什么,在xml中的对应的标签是什么答:使用
20、activemq是什么场景下可以使用,如果数据信息泄露的话如何去处理用途就是用来处理消息队列的主要作用是消除高并发访问高峰,加快网站的响应速度。在不使用消息队列的情况下,用户的请求数据直接写入数据库,高发的情况下,会对数据库造成巨大的压力,同时也使得系统响应延迟加剧,但使用队列后,用户的请求发给队列后立即返回。
21、mybatis下边有一个动态代理是那个Mybatis的使用需要用到Mapper映射文件,一个是映射接口,另一个是映射XML文件(此处不详谈映射文件XML),在应用中我们可以感觉到,映射接口似乎对接着XML文件中的实现命令,可是我们在运行程序是时候调用的往往是Mapper接口,而不是一个包含逻辑的实现类。很显然Mapper产生了代理类。
22、requestMapping的注解的衍生有哪几种答:@GetMapping是一个组合注解,是@RequestMapping(method=RequestMethod.GET)的缩写。答:@PostMapping是一个组合注解,是@RequestMapping(method=RequestMethod.POST)的缩写。
23、dubbo提供服务的注解是那个service
24、mybatis的如何进行模糊查询答:在语句的后边拼接对应的where条件以及if条件,在条件中使用%以及like关键字案例如下:
25、activemq是做什么的
26、简单介绍一下Springboot以及SpringCloud答:Spring框架基于POJO的轻量级和最小侵入性编程;通过依赖注入(DI)和面向接口实现松耦合;基于切面(AOP)和惯例进行声明式编程;通过切面和模版减少样式代码;SpringBoot框架介绍:SpringBoot是所有基于Spring开发的项目的起点。SpringBoot的设计是为了让你尽可能快的跑起来Spring应用程序并且尽可能减少你的配置文件。简单来说就是SpringBoot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包,springboot整合了所有的框架(不知道这样比喻是否合适)。四个主要特性(?SpringBootStarter:他将常用的依赖分组进行了整合,将其合并到一个依赖中,这样就可以一次性添加到项目的Maven或Gradle构建中;(?自动配置:SpringBoot的自动配置特性利用了Spring4对条件化配置的支持,合理地推测应用所需的bean并自动化配置他们;(?命令行接口:(Command-line-interface,CLI):SpringBoot的CLI发挥了Groovy编程语言的优势,并结合自动配置进一步简化Spring应用的开发;(?Actuatir:它为SpringBoot应用的所有特性构建一个小型的应用程序。但首先,我们快速了解每项特性,更好的体验他们如何简化Spring编程模型。
27、docker是做什么的答:简介:Docker作为一个软件集装箱化平台,可以让开发者构建应用程序时,将它与其依赖环境一起打包到一个容器中,然后很容易地发布和应用到任意平台中。核心:docker有3大核心:镜像、容器、仓库。解决问题解决运行环境不一致所导致的问题。这样就不会产生“本地运行没问题,可一到服务器上就不行了”的情况。限定最大的cpu使用内存硬盘,这样就起到了隔离的作用,避免产生“一块代码产生死循环,把磁盘占满了,其它程序也挂了”的情况。
28、什么是JVM答:JVM实际上是java的虚拟机运行内存环境,java的跨平台必须由jvm的支持。JVM在运行的过程中实际上用到那个类才会去加载那个类,并不会因为开始运行时加载所有的类。JVM实际上分为三个系统模块:类加载器子系统、执行引擎子系统、垃圾收集子系统。JVM的内存或者空间的话:class文件存储区(方法区)、对象存储区(堆区)、线程执行数据区(栈区)。具体的架构图:
29、什么是动态代理答:动态代理是设计模式中的一种代理模式,为其他对象提供一种控制对这个对象的访问控制;在某些情况下,客户在不想或者不能直接应用某一个对象的情况下直接应用另一个对象,这个时候代理对象可以在中间起到客户端与目标对象之间起到中介的作用。所谓动态代理是可以在java运行过程中动态的创建一个类去实现一个或多个接口,可以在不修改原有类代码的基础上动态的添加功能和方法。正是因为这个特性使动态代理被java的许多框架中被广泛的使用。衍生:静态代理答:对应的静态代理是已经生成的第三方的工具生成,在进行编译。在程序运行之前,代理类的.class文件已经存在。
30、什么是反射答:JAVA反射机制是在运行状态中,对于任意一个实体类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。个人理解:我们可以通过一个新建一个java类,并且已经知道java类中有什么方法并且去调用为正方向,反射于此相反。我并不知道该类中存在那些方法通过直接xx.class去获取他的方法。
31、什么是数据库连接池答:连接池的原理就是:我事先创建好几个数据库连接放着,当我的系统需要操作数据库时就从连接池里直接拿连接,并将这个连接标记为忙;用完后在放会池中,标记为空闲;当连接池里的连接都在被使用,如果此时还要连接,连接池就会在创建连接放到池里,,这些连接的数量,都是在配置文件里由你控制的。
32、什么是垃圾回收机制GC触发的条件有两种:(?程序调用System.gc时可以触发;(?系统自身来决定GC触发的时机。
33、微服务是怎么部署的答:DockerCompose编排工具k8sJenkins具体详细的自己了解一下,不过基本没人问
34、SpringMVC与SpringBoot之间的区别是什么我实在是不知道有什么可对比性,只好把基本概念给弄下来了SpringMVC的功能SpringMVC提供了一种轻度耦合的方式来开发web应用。SpringMVC是Spring的一个模块,式一个web框架。通过DispatcherServlet,ModelAndView和ViewResolver,开发web应用变得很容易。解决的问题领域是网站应用程序或者服务开发——URL路由、Session、模板引擎、静态Web资源等等。SpringBoot的功能在上边有描述Spring的功能Spring框架就像一个家族,有众多衍生产品例如boot、security、jpa等等。但他们的基础都是Spring的ioc和aopioc提供了依赖注入的容器aop,解决了面向横切面的编程,然后在此两者的基础上实现了其他延伸产品的高级功能。SpringMVC是基于Servlet的一个MVC框架主要解决WEB开发的问题,因为Spring的配置非常复杂,各种XML、JavaConfig、hin处理起来比较繁琐。于是为了简化开发者的使用,从而创造性地推出了Springboot,约定优于配置,简化了spring的配置流程。
35、面向对象和面向过程之间的区别面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
36、存储过程会不会写,(建议了解一下游标)
37、linux下边可以查看端口的命令是那些netstat-anp|grep端口号
38、什么是高内聚、低耦合高内聚。特点:最充分的利用模块中每一个元素的功能,达到功能实现最大化,内聚性越强越好,用最小的资源干最大的事情。低耦合。特点:项目中的各个模块之间的关联要尽可能的小,耦合性(相互间的联系)越低越好,减小“牵一发而动全身”的可能性!
39、zookeeper是怎么理解的
40、查询LInux中的cpu大小#cat/proc/cpuinfo