• 周老师:13647472554

新闻动态

Java编程培训分享几道深层次的面试题目
作者:领航者教育 / 2019-06-27 / 浏览次数:

      领航者java编程培训班的老师总结了很多Java开发笔试题,一起来看看吧!

  Java对象的生命周期

  Java对象生命周期包含创建阶段 、 应用阶段 、不可见阶段 、不可达阶段 、收集阶段 、终结阶段、 对象空间重新分配阶段等等。

  HashMap和HashTable存储原理

  HashMap和HashTable是使用数组+链表结构实现,根据Hash和table长度计算数组的下标index做操作,hashMap默认数组长度为16,hashMap对null值的key都放在table[0]的位置,table[index]形成1个链表,当然在新版jdk中链表节点数>8会变成红黑树结构。hashMap达到至大数量会扩容,扩容table长度变为2倍,每个元素(table中)但重新计算index放到新的table中。

千锋java.jpg

  说说堆的年轻代和老年代

  堆的年轻代大则老年代小,GC少,但是每次时间会比较长。年轻代小则老年代大,会缩短每次GC的时间,但是次数频繁。可以让老年代尽量缓存常用对象,JVM默认年轻代和老年代的大小比例为1:2,。观察峰值老年代内存,不影响full GC,加大老年代可调1:1,但是要给老年代预留三分之一的空间。减少使用全局变量和大对象 ,调整新生代,老年代更合适。

  HTTP协 议,GET和POST 的区别

  1. get是从服务器上获取数据,post是向服务器传送数据。

  2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。POST把提交的数据则放置在是HTTP包的包体中,是用HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。

  3. 安全性方面:对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。

  4.传输数据量方面: get传送的数据量较小,不能大于2KB。理论上讲,POST是没有大小限制的,HTTP协 议规范也没有进行大小限制,说“POST数据量存在80K/100K的大小限制”是不准确的,POST数据是没有限制的,起限制作用的是服务器的处理程序的处理能力。

  5. 执行效率:get安全性非常低,post安全性较高。但是执行效率却比Post方法好。

  栈溢出的原因有哪些

  是否递归的调用;大量循环;全局变量是否过多;数组,List,Map数据是否过大;用DDMS工具检查地方。内存溢出的原因过多使用了static;static建议只用int和string等基本类型;大量的递归或者死循环;大数据项的查询,如返回表的所有记录,应该采用分页查询。检查是否有数组、List、map中存放的是对象的引用而不是对象,这些引用会让对应对象不能被释放。栈过大会导致内存占用过多,频繁页交换阻碍效率。

  Dubbo源码使用了哪些设计模式

  A,工厂模式,ExtenstionLoader.getExtenstionLoader(Protocol.class).getAdaptiveExtenstion()

  B,装饰器模式+责任链,以provider的调用链为例,具体调用链代码是在protocolFilterWrapper的buildInvokeChain完成的,将注解中含有group=provider的Filter实现,调用顺序为EchoFilter -> ClassLoaderFilter -> GenericFilter -> ContextFilter -> ExceptionFilter -> TimeoutFilter -> MonitorFilter -> TraceFilter。装饰器模式和责任链混合使用,Echo是回声测试请求,ClassLoaderFilter则只是在其主功能上添加了功能。

  C,观察者模式,provider启动时需要与注册中心交互,先注册自己的服务,再订阅自己的服务,订阅时采用了观察者模式,注册中心每5s定时检查是否有服务更新,有更新则向服务提供者发送1个notify消息后即可运行NotifyListener的notity方法,执行监听器方法。

  D,动态代理模式。 扩展JDK的ExtensionLoaderdeAdaptive实现,根据调用阶段动态参数决定调用哪个类,生成代理类的代码是ExtensionLoader的createAdaptiveExtenstionClassLoader方法。

相关文章


全部课程
热门资讯
快速导航

全部课程: Java全栈开发 | 大数据开发 | 云计算 | RHCE认证 | Linux运维工程师 | Python全栈开发

Copyright @ 2011-2019 衡阳市领航者教育培训学校有限公司.版权所有 | 备案号:湘ICP备19012681号

公司地址:湖南省衡阳市石鼓区船山大道5号百花大厦8-9层 | 网站地图

咨询QQ:547110589 | 手机:13647472554 | 电话:0734-8381101

官方微信公众号: