专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 多家公司常问Java的基础知识面试题

多家公司常问Java的基础知识面试题

更新时间:2020-03-18 10:18:20 来源:动力节点 浏览1803次


  webservice是什么?


  webservice是一种跨编程语言和跨操作系统的远程调用技术,遵循SOPA/WSDL规范。


  springCloud是什么?


  springcloud是一个微服务框架,并提供全套分布式系统解决方案。支持配置管理,熔断机制,leader选举,服务治理,分布式session,微代理,控制总线,智能路由,一次性token。


  Java中堆和栈有什么不同?


  每个线程都有自己的栈内存,用于存储本地变量,方法参数和栈调用,一个线程中存储的变量对其它线程是不可见的。而堆是所有线程共享的一片公用内存区域。对象都在堆里创建,为了提升效率线程会从堆中弄一个缓存到自己的栈,如果多个线程使用该变量就可能引发问题,这时volatile变量就可以发挥作用了,它要求线程从主存中读取变量的值。


  堆:(对象)


  引用类型的变量,其内存分配在堆上或者常量池(字符串常量、基本数据类型常量),需要通过new等方式来创建。


  堆内存主要作用是存放运行时创建(new)的对象。


  (主要用于存放对象,存取速度慢,可以运行时动态分配内存,生存期不需要提前确定)


  栈:(基本数据类型变量、对象的引用变量)


  基本数据类型的变量(int、short、long、byte、float、double、boolean、char等)以及对象的引用变量,其内存分配在栈上,变量出了作用域就会自动释放。


  Spring的Scope有以下几种,通过@Scope注解来实现:


  (1)Singleton:一个Spring容器中只有一个Bean的实例,此为Spring的默认配置,全容器共享一个实例。


  (2)Prototype:每次调用新建一个Bean实例。


  (3)Request:Web项目中,给每一个httprequest新建一个Bean实例。


  (4)Session:Web项目中,给每一个httpsession新建一个Bean实例。


  (5)GlobalSession:这个只在portal应用中有用,给每一个globalhttpsession新建一个Bean实例。


  Spring事务传播行为


  所谓事务的传播行为是指,如果在开始当前事务之前,一个事务上下文已经存在,此时有若干选项可以指定一个事务性方法的执行行为。在TransactionDefinition定义中包括了如下几个表示传播行为的常量:


  TransactionDefinition.PROPAGATION_REQUIRED:如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。这是默认值。


  TransactionDefinition.PROPAGATION_REQUIRES_NEW:创建一个新的事务,如果当前存在事务,则把当前事务挂起。


  TransactionDefinition.PROPAGATION_SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务的方式继续运行。


  TransactionDefinition.PROPAGATION_NOT_SUPPORTED:以非事务方式运行,如果当前存在事务,则把当前事务挂起。


  TransactionDefinition.PROPAGATION_NEVER:以非事务方式运行,如果当前存在事务,则抛出异常。


  TransactionDefinition.PROPAGATION_MANDATORY:如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。


  TransactionDefinition.PROPAGATION_NESTED:如果当前存在事务,则创建一个事务作为当前事务的嵌套事务来运行;如果当前没有事务,则该取值等价于TransactionDefinition.PROPAGATION_REQUIRED。


  Spring的声明式事务管理力度是什么级别?


  Struts2是类级别的,Spring是方法级别的spring事务可以分为编程式事务和声明式事务


  springMVC与struts2的区别:


  1、Struts2是类级别的拦截,一个类对应一个request上下文,SpringMVC是方法级别的拦截


  2、SpringMVC的方法之间基本上独立的,独享requestresponse数据


  3、由于Struts2需要针对每个request进行封装,把request,session等servlet生命周期的变量封装成一个一个


  Map,供给每个Action使用,并保证线程安全,所以在原则上,是比较耗费内存的


  4、拦截器实现机制上,Struts2有以自己的interceptor机制,SpringMVC用的是独立的AOP方式


  5、SpringMVC的入口是servlet,而Struts2是filter


  6、SpringMVC集成了Ajax


  7、SpringMVC验证支持JSR303,处理起来相对更加灵活方便,而Struts2验证比较繁琐,感觉太烦乱


  8、SpringMVC和Spring是无缝的。从这个项目的管理和安全上也比Struts2高


  9、Struts2更加符合OOP的编程思想,SpringMVC就比较谨慎,在servlet上扩展


  10、SpringMVC开发效率和性能高于Struts2


  11、SpringMVC可以认为已经100%零配置


  Spring框架中的核心思想包括什么?


  主要思想是IOC控制反转,DI依赖注入,AOP面向切面


  ArrayList和LinkedList的大致区别如下:


  1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。


  2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。


  3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。


  ArrayList,Vector主要区别为以下几点:


  (1):Vector是线程安全的,源码中有很多的synchronized可以看出,而ArrayList不是。导致Vector效率无法和ArrayList相比;


  (2):ArrayList和Vector都采用线性连续存储空间,当存储空间不足的时候,ArrayList默认增加为原来的50%,Vector默认增加为原来的一倍;


  HashSet与HashMap的区别:


  HashMapHashSet实现了Map接口实现Set接口存储键值对仅存储对象调用put()向map中添加元素调用add()方法向Set中添加元素HashMap使用键(Key)计算HashcodeHashSet使用成员对象来计算hashcode值,


  对于两个对象来说hashcode可能相同,


  所以equals()方法用来判断对象的相等性,


  如果两个对象不同的话,那么返回false


  HashMap相对于HashSet较快,因为它是使用唯一的键获取对象HashSet较HashMap来说比较慢


多家公司常问Java的基础知识面试题


    以上就是动力节点Java培训机构小编介绍的“多家公司常问Java的基础知识面试题”的内容,希望对大家有帮助,如有疑问,请在线咨询,有专业老师随时为你服务。


提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>