- 浏览: 37197 次
最新评论
-
edidada:
有完整的代码不?
JNDI理解与实例 -
fj_ding:
tieye 写道如何在 线程池 中 给线程设置名称 了解吗?这 ...
面试心得与总结-——答案整理_3 持续更新 -
tieye:
如何在 线程池 中 给线程设置名称 了解吗?
面试心得与总结-——答案整理_3 持续更新
31. 反射的作用与原理。
1:反射的作用:反射可以增加代码的灵活性,通过反射可以使系统和插件解耦,如Spring就是使用反射来实现控制反转的(IOC)。
2:什么是反射: java运行时阶段的程度对自身的一种审查的能力;
3:反射机制的原理:反射就是java语言在运行时可以通过获取类的class对象,并通过class对象获取到当前对象的方法(包括私有方法),属性,以及构造方法,运行时class对象相当于外部程序访问内存中该类的一道门,通过该到门能获取到运行时该类的各种东西。
32. 泛型常用特点,List<String>能否转为List<Object>。
1:泛型的种类:泛型类、泛型接口、泛型方法。Java泛型被引入的好处是安全简单。增加代码的复用性。(泛型解决了方法的重载问题:public void write(Integer i, Integer[] ia);public void write(Double d, Double[] da); 的范型版本为public <T> void write(T t, T[] ta))
2:为什么要引用泛型:在java1.5之前,如果一个方法的参数中要支持任意类型,则一般用Object类来作为参数的类型,因此在运行的时候就要进行类型转换。这种自动转换类型容易出现当编译的时候不会报错,而运行的时候回报错,这是一个安全隐患(我还没有遇到过,可能是这种情况,就是返回对象是Object,此时要将 Object转换成具体的类型时这是容易出现错误的)。注意:在java中父类是可以转换成子类的而且不报错,调用的时候出错运行时才能检查到(亲测Sunzi sun=(Sunzi)new Child();可以,编译通过)
3:泛型的好处是在编译的时候检查类型安全(类型检查是保证类型转换是可以正确转换的(object编译的时候就没有检查到父类转子类)),并且所有的强制转换都是自动和隐式的,提高代码的重用率。
4:泛型信息在编译的时候会被自动擦除的,也就是在字节码中没有泛型的信息,并使用其限定类型替换(无限定类型用Object),如public T fun(T t)替换成public Object fun(Object t),限定类型只的是T extend Father,则用Father替换T,List<T> 则变成List。
5:泛型主要的体现还是在类型安全的检查与限定,如List<String>,那我们就只能放入String类型的,在这儿就体现了类型检查了。
6:List<String>不能List<Object>,因为泛型并不具有继承性。只是一个限定的作用。
33. 解析XML的几种方式的原理与特点:DOM、SAX、PULL。
1:DOM是基于树的解析,DOM是把XML全部加载到内存中建立一棵树之后再进行处理。所以DOM不适合处理大型的XML【会产生内存的急剧膨胀】。这样可以随时修改xml文件内容。
2:SAX基于事件的解析,sax解析一行一行的读取xml文件开始标记的时候执行startElement方法,然后执行对应解析方法character方法,当遇到结束表示符就调用endElement方法,所以所是基于事件型解析, SAX不必把全部的xml都加载到内存中。但是SAX的缺点也很明显,它只能对文件顺序解析一遍,不支持对文件的随意存取。SAX也仅仅能够读取文件的内容,并不能修改内容。DOM可以随意修改文件树。(主要用于读取xml文件)
3:SAX 和 DOM 不是相互排斥的,记住这点很重要。您可以使用 DOM 来创建 SAX 事件流,也可以使用 SAX 来创建 DOM 树。事实上,用于创建 DOM 树的大多数解析器实际上都使用 SAX 来完成这个任务!
34. Java与C++对比。
(1)Java比C++程序可靠性更高。
(2)Java语言中没有指针的概念,
(3)Java用接口(Interface)技术取代C++程序中的多继承性;
(4)Java语言不需要程序对内存进行分配和回收。Java中自动回收内存,而c++中要调用new和delete来申请和释放内存,如果对内存分配与申请掌握不好就容易报错
(5)异常:JAVA中的异常机制用于捕获例外事件,增强系统容错能力 try{//可能产生例外的代码 }catch(exceptionType name){ //处理 } 其中exceptionType表示异常类型。而C++则没有如此方便的机制
(6)“可怕”的goto语句是c和c++的“遗物”,它是该语言技术上的合法部分,引用goto语句引起了程序结构的混乱,不易理解,goto语句子要用于无条件转移子程序和多结构分支技术。鉴于以广理由,Java不提供goto语句,它虽然指定goto作为关键字,但不支持它的使用,使程序简洁易读。
35. Java1.7与1.8新特性。
1:1.7新特性:
1:switch中可以使用字串了运用
2:List<String> tempList = new ArrayList<>(); 即泛型实例化类型自动推断
3.语法上支持集合,而不一定是数组final List<Integer> piDigits = [ 1,2,3,4,5,8 ];
4:try块可以不用finally手动关闭,直接try块中就可以关闭
5:很长的数字可读性不好,在Java 7中可以使用下划线分隔长int以及long了,如1_1 * 10 = 110,120 – 1_0 = 110
Java1.8新特性
1: Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,default double sqrt(int a) {return Math.sqrt(a);},改方法不用实现,可以自己直接通过子类调用。
在 java 8 之前,接口与其实现类之间的 耦合度 太高了(tightly coupled),当需要为一个接口添加方法时,所有的实现类都必须随之修改。默认方法解决了这个问题,它可以为接口添加新的方法,而不会破坏已有的接口的实现。这在 lambda 表达式作为 java 8 语言的重要特性而出现之际,为升级旧接口且保持向后兼容(backward compatibility)提供了途径。
2:增加了lamda表达式
3:Java 8 在包java.time下包含了一组全新的时间日期API
36. 设计模式:单例、工厂、适配器、责任链、观察者等等。
37. JNI的使用。
1:jni就是通过java本地方法可以调用其他语言的代码,能与其它语言(如C、C++)的动态库进行交互
2:jni的使用场景
1:java是一门半解释性的语言,代码很容易被别人反编译,因此可以采用jni通过c语言或者c++来实现其核心,这样还能提高一定的性能;
2:一些性能要求特别高时,可以采用汇编语言实现,通过jni调用;
3:别的语言已经实现了的功能,通过jni可以直接调用,而不用重新编写。
3:jni使用步骤:用native关键字定义本地方法,然后编译该类为class文件,用javah工具生成.h的头文件,然后用c/c++语言实现其中的.h头文件中的方法,并生成动态库(以.so结尾的文件,大多数动态库是以.dll文件结尾的)),然后提供给java使用
38:java的动态代理与静态代理
1:静态代理,这比较简单,相当于一个静态代理模式,比如要在一方法前输入一个输出helloworld方法的前面输出一句welcome,则可以用一个代理类,在输出welcome的时候回调输出helloworld的方法。缺点是当一个借口中有很多个方法需前输出welcome,则代理类中就要取实现借口中的每一个方法,然后回调,这样比较麻烦;http://kuangbaoxu.iteye.com/blog/192804
2:动态代理就是将给一个需要代理的对象关联一个调用处理器(InvokeHandler),然后通过Prox.newPoxyInstance对象创建代理对象,通过该代理对象将要代理的真实对象和InvokeHandler的对象关联起来,并将代理对象强制转换成真实对象所对应的类,然后通过该代理对象的的引用去调用方法,则会出现动态代理的情况;真实的原理就是在当通过代理对象的引用都调用的时候,会调用invokehander对象的invoke方法(个人理解:因为通过Proxy类创建代理对象的时候,会传递一个真实代理对象实现的类的接口进去,动态代理通过内部实现了该接口的所有方法,然后在每个方法中回调InvokeHander类对象的invoke方法,并不是在编译的时候采用inline的那种方法直接编译进去,因为要用到反射,所以不可能是采用内联的方法实现的)。http://www.cnblogs.com/xiaoluo501395377/p/3383130.html
Java里有很多很杂的东西,有时候需要你阅读源码,大多数可能书里面讲的不是太清楚,需要你在网上寻找答案。
推荐书籍:《java核心技术卷I》《Thinking in java》《java并发编程》《effictive java》《大话设计模式》
1:反射的作用:反射可以增加代码的灵活性,通过反射可以使系统和插件解耦,如Spring就是使用反射来实现控制反转的(IOC)。
2:什么是反射: java运行时阶段的程度对自身的一种审查的能力;
3:反射机制的原理:反射就是java语言在运行时可以通过获取类的class对象,并通过class对象获取到当前对象的方法(包括私有方法),属性,以及构造方法,运行时class对象相当于外部程序访问内存中该类的一道门,通过该到门能获取到运行时该类的各种东西。
32. 泛型常用特点,List<String>能否转为List<Object>。
1:泛型的种类:泛型类、泛型接口、泛型方法。Java泛型被引入的好处是安全简单。增加代码的复用性。(泛型解决了方法的重载问题:public void write(Integer i, Integer[] ia);public void write(Double d, Double[] da); 的范型版本为public <T> void write(T t, T[] ta))
2:为什么要引用泛型:在java1.5之前,如果一个方法的参数中要支持任意类型,则一般用Object类来作为参数的类型,因此在运行的时候就要进行类型转换。这种自动转换类型容易出现当编译的时候不会报错,而运行的时候回报错,这是一个安全隐患(我还没有遇到过,可能是这种情况,就是返回对象是Object,此时要将 Object转换成具体的类型时这是容易出现错误的)。注意:在java中父类是可以转换成子类的而且不报错,调用的时候出错运行时才能检查到(亲测Sunzi sun=(Sunzi)new Child();可以,编译通过)
3:泛型的好处是在编译的时候检查类型安全(类型检查是保证类型转换是可以正确转换的(object编译的时候就没有检查到父类转子类)),并且所有的强制转换都是自动和隐式的,提高代码的重用率。
4:泛型信息在编译的时候会被自动擦除的,也就是在字节码中没有泛型的信息,并使用其限定类型替换(无限定类型用Object),如public T fun(T t)替换成public Object fun(Object t),限定类型只的是T extend Father,则用Father替换T,List<T> 则变成List。
5:泛型主要的体现还是在类型安全的检查与限定,如List<String>,那我们就只能放入String类型的,在这儿就体现了类型检查了。
6:List<String>不能List<Object>,因为泛型并不具有继承性。只是一个限定的作用。
33. 解析XML的几种方式的原理与特点:DOM、SAX、PULL。
1:DOM是基于树的解析,DOM是把XML全部加载到内存中建立一棵树之后再进行处理。所以DOM不适合处理大型的XML【会产生内存的急剧膨胀】。这样可以随时修改xml文件内容。
2:SAX基于事件的解析,sax解析一行一行的读取xml文件开始标记的时候执行startElement方法,然后执行对应解析方法character方法,当遇到结束表示符就调用endElement方法,所以所是基于事件型解析, SAX不必把全部的xml都加载到内存中。但是SAX的缺点也很明显,它只能对文件顺序解析一遍,不支持对文件的随意存取。SAX也仅仅能够读取文件的内容,并不能修改内容。DOM可以随意修改文件树。(主要用于读取xml文件)
3:SAX 和 DOM 不是相互排斥的,记住这点很重要。您可以使用 DOM 来创建 SAX 事件流,也可以使用 SAX 来创建 DOM 树。事实上,用于创建 DOM 树的大多数解析器实际上都使用 SAX 来完成这个任务!
34. Java与C++对比。
(1)Java比C++程序可靠性更高。
(2)Java语言中没有指针的概念,
(3)Java用接口(Interface)技术取代C++程序中的多继承性;
(4)Java语言不需要程序对内存进行分配和回收。Java中自动回收内存,而c++中要调用new和delete来申请和释放内存,如果对内存分配与申请掌握不好就容易报错
(5)异常:JAVA中的异常机制用于捕获例外事件,增强系统容错能力 try{//可能产生例外的代码 }catch(exceptionType name){ //处理 } 其中exceptionType表示异常类型。而C++则没有如此方便的机制
(6)“可怕”的goto语句是c和c++的“遗物”,它是该语言技术上的合法部分,引用goto语句引起了程序结构的混乱,不易理解,goto语句子要用于无条件转移子程序和多结构分支技术。鉴于以广理由,Java不提供goto语句,它虽然指定goto作为关键字,但不支持它的使用,使程序简洁易读。
35. Java1.7与1.8新特性。
1:1.7新特性:
1:switch中可以使用字串了运用
2:List<String> tempList = new ArrayList<>(); 即泛型实例化类型自动推断
3.语法上支持集合,而不一定是数组final List<Integer> piDigits = [ 1,2,3,4,5,8 ];
4:try块可以不用finally手动关闭,直接try块中就可以关闭
5:很长的数字可读性不好,在Java 7中可以使用下划线分隔长int以及long了,如1_1 * 10 = 110,120 – 1_0 = 110
Java1.8新特性
1: Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,default double sqrt(int a) {return Math.sqrt(a);},改方法不用实现,可以自己直接通过子类调用。
在 java 8 之前,接口与其实现类之间的 耦合度 太高了(tightly coupled),当需要为一个接口添加方法时,所有的实现类都必须随之修改。默认方法解决了这个问题,它可以为接口添加新的方法,而不会破坏已有的接口的实现。这在 lambda 表达式作为 java 8 语言的重要特性而出现之际,为升级旧接口且保持向后兼容(backward compatibility)提供了途径。
2:增加了lamda表达式
3:Java 8 在包java.time下包含了一组全新的时间日期API
36. 设计模式:单例、工厂、适配器、责任链、观察者等等。
37. JNI的使用。
1:jni就是通过java本地方法可以调用其他语言的代码,能与其它语言(如C、C++)的动态库进行交互
2:jni的使用场景
1:java是一门半解释性的语言,代码很容易被别人反编译,因此可以采用jni通过c语言或者c++来实现其核心,这样还能提高一定的性能;
2:一些性能要求特别高时,可以采用汇编语言实现,通过jni调用;
3:别的语言已经实现了的功能,通过jni可以直接调用,而不用重新编写。
3:jni使用步骤:用native关键字定义本地方法,然后编译该类为class文件,用javah工具生成.h的头文件,然后用c/c++语言实现其中的.h头文件中的方法,并生成动态库(以.so结尾的文件,大多数动态库是以.dll文件结尾的)),然后提供给java使用
38:java的动态代理与静态代理
1:静态代理,这比较简单,相当于一个静态代理模式,比如要在一方法前输入一个输出helloworld方法的前面输出一句welcome,则可以用一个代理类,在输出welcome的时候回调输出helloworld的方法。缺点是当一个借口中有很多个方法需前输出welcome,则代理类中就要取实现借口中的每一个方法,然后回调,这样比较麻烦;http://kuangbaoxu.iteye.com/blog/192804
2:动态代理就是将给一个需要代理的对象关联一个调用处理器(InvokeHandler),然后通过Prox.newPoxyInstance对象创建代理对象,通过该代理对象将要代理的真实对象和InvokeHandler的对象关联起来,并将代理对象强制转换成真实对象所对应的类,然后通过该代理对象的的引用去调用方法,则会出现动态代理的情况;真实的原理就是在当通过代理对象的引用都调用的时候,会调用invokehander对象的invoke方法(个人理解:因为通过Proxy类创建代理对象的时候,会传递一个真实代理对象实现的类的接口进去,动态代理通过内部实现了该接口的所有方法,然后在每个方法中回调InvokeHander类对象的invoke方法,并不是在编译的时候采用inline的那种方法直接编译进去,因为要用到反射,所以不可能是采用内联的方法实现的)。http://www.cnblogs.com/xiaoluo501395377/p/3383130.html
Java里有很多很杂的东西,有时候需要你阅读源码,大多数可能书里面讲的不是太清楚,需要你在网上寻找答案。
推荐书籍:《java核心技术卷I》《Thinking in java》《java并发编程》《effictive java》《大话设计模式》
发表评论
-
面试心得与总结-——答案整理_9 持续更新
2016-09-13 20:12 1119Jsp与Servlet技术 收集的网上一些关于Ht ... -
面试心得与总结-——答案整理_8 持续更新
2016-09-13 19:59 11791、Jsp与Servlet技术 1.jsp有哪些内 ... -
java读取文件与写文件
2016-09-01 17:08 2518前言 java中io流一直是一个令人头疼的东西,主要是各种 ... -
面试心得与总结-——答案整理_7 持续更新
2016-08-31 21:32 2080TCP/IP 1. OSI与TCP/IP各层的结构与 ... -
面试心得与总结-——答案整理_6 持续更新
2016-08-31 19:24 9441.进程与线程的区别 1:进程是系统进行资源分配和调度的基 ... -
面试心得与总结-——答案整理_5 持续更新
2016-08-24 00:28 3517JVM 1. 内存模型以及分区,需要详细到每个区放什 ... -
面试心得与总结-——答案整理_3 持续更新
2016-08-22 21:47 190121. 实现多线程的两种方法:Thread与Runable。 ... -
面试心得与总结-——答案整理_2 持续更新
2016-08-22 21:38 178811. HashMap和ConcurrentHashMap ... -
面试心得与总结-——答案整理_1 持续更新
2016-08-22 20:51 1763最近各种看面经,无意间发现一篇对面试总结得比较全 ... -
Scanner常用方法详解
2016-08-02 00:55 5463最近要面试了,以前对Scanner不怎么熟悉,一直都是使用ne ... -
java实现TCP与UDP混合传输文件总结
2015-04-07 19:44 1387java实现TCP与UDP混合传输文件总结 ... -
用java语言用sort方法实现groupby分组
2015-04-20 14:19 640用java语言用sort方法实现groupby分组 ... -
java中synchronized锁定对象问题
2016-03-14 22:08 499java中synchronized锁定对象问题 关于 ... -
DNS学习笔记
2016-03-16 09:53 324DNS学习笔记 DNS简单 ... -
如何创建处理器池之享元模式
2016-04-19 09:29 526最近在看tomcat源码的 ... -
Integer.valueof()学习之享元模式
2016-04-19 11:33 498问题描述: 1. Integer类初始化 //当这 ... -
JNDI理解与实例
2016-04-29 16:51 974本文转载于http://blog.csdn.net/xia ... -
java中读取.properties配置文件
2016-05-02 08:38 571注:本文转自http://www.cnblogs.com/fs ... -
java编码规范
2016-05-06 17:10 1136java编码规范 java标准委员会(j ...
相关推荐
面试题.doc————电子版_doc版
面试.doc————电子版_doc版
网安面试必考题合集--含答案
全网最全-谷粒商城项目-面试总结-简历优化_Java-You的博客-CSDN博客 .html
这是因为客户端负责计算哈希值并直接与目标服务器通信,这意味着增加新的Memcached服务器非常简单且不会影响现有服务器的负载。 - **易于扩展**:当系统需要更多内存或处理能力时,可以通过简单地添加更多的...
谷粒学苑-在线教育实战项目-面试总结-简历优化_Java-You的博客-CSDN博客 .html
在 IT 面试中,理解基础概念以及其在实际编程中的应用至关重要。以下是对给定文件中涉及知识点的详细解答: 1. **逻辑操作(&, |, ^)与条件操作(&&, ||)**: - **逻辑操作**:在 Java 中,`&` 和 `|` 是按位逻辑...
在IT行业中,面试和笔试是评估候选人技能的重要环节。这些题目涵盖了Java编程语言的基础知识,包括访问修饰符、数据类型转换、抽象类与接口的区别、类的构造与执行顺序、内部类的使用以及JSP内置对象的理解。接下来...
### CareerCup-Coding_Interview_Top_150_Questions_4th.pdf 知识点解析 #### 核心内容概述 此书名为《Cracking the Coding Interview》(中文可译为“破解编程面试”),是第四版,由Gayle Laakmann McDowell撰写...
Java全能学习面试手册——互联网企业面试真题.zip 01 java面试——北京-百度-Java中级.pdf 02 java面试——北京-京东-Java中级.pdf 03 java面试——广州-唯品会-Java大数据开发工程师.pdf 04 java面试——杭州-阿里...
《Typcial-C.zip_typcial——C语言程序设计的精华概览》 在计算机科学的世界里,C语言无疑是一门至关重要的编程语言。以其简洁、高效和广泛的适用性,C语言成为了许多初学者入门以及专业人士深入研究的基础。...
《Java工作守门人——面试必备辞典》 在Java编程的世界里,面试是每一位开发者通往职业发展的重要关卡。这份名为"dictionary-of-java-job-keepers.rar_Keepers"的压缩包,就如同一个守护者,它包含了Java程序员面试...
本文档总结了 Oracle 数据库相关的面试问题和答案,涵盖了 optimizer_mode、CBO、RBO、索引、排序、表空间、回滚段、绑定变量、SQL 优化等多个方面的知识点。 _optimizer_mode_ Optimizer_mode 是 Oracle 数据库中...
----------------J100IT名企面试总结.pdf ----------------100IT名企java面试真题整理面试必考点.pdf ----------------18个万能非技术面试题.docx ----------------100IT名企java面试必考面试题.pdf ----Interview-...
《C++面试题大全——为你的硕士求职之路保驾护航》 在当今竞争激烈的IT行业中,拥有扎实的编程基础和丰富的面试经验对于寻求硕士级别的职位至关重要。本资料“C--for-interview.rar”是一个针对C++面试的精选题库,...
研究生面试英文自我介绍--终极整理版学习总结.doc
全网最齐全的Java面试题库-附答案-持续更新
总结来说,制作一份有效的简历需关注信息的清晰度、语言的通俗性和邮件的规范性,以此来吸引HR的注意力,提高面试机会。同时,根据不同的职位需求和个人特点灵活调整简历内容,使简历更具针对性。
软件大数据面试笔试复习资料面试技巧HR面试常问的问题总结面试笔试题整理资料合集: 01大数据面试复习----Java基础---集合类、多线程、JVM 02大数据面试复习----画重点----常问问题分析 03大数据面试复习----画重点--...