IT名企常见面试题总结之Java篇(一)

1. 说说Java类的加载

       类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。类的生命周期分为加载、验证、准备 、解析、初始化。 

     类加载有三种方式:
1、命令行启动应用时候由JVM初始化加载。
2、通过Class.forName()方法动态加载。
3、通过ClassLoader.loadClass()方法动态加载。

2. 了解gc吗?

        Java提供finalize()方法,垃圾回收器准备释放内存的时候,会先调用finalize()。(1).对象不一定会被回收。
GC的工作目的很明确:在堆中,找到已经无用的对象,并把这些对象占用的空间收回使其可以重新利用.大多数垃圾回收的 算法思路都是一致的:把所有对象组成一个集合,或可以理解为树状结构,从树根开始找,只要可以找到的都是活动对象,如果找不到,这个对象就是凋零的昨日黄花,应该被回收了。

3.Java中有几种类型的流

         常见的流有两种,分别为字节流和字符流。其中,字节流继承于InputStream与OutputStream,字符流继承于Reader与Writer。在java.io包中还有许多其他的流,流的作用主要是为了改善程序性能并且使用方便。

4.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?

      Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。J ava源程序先经过javac编译器编译成二进制的.class字节码文件(java的跨平台指的就是.class字节码文件的跨平台,.class字节码文件是与平台无关的),.class文件再运行在jvm上,java解释器(jvm的一部分)会将其解释成对应平台的机器码执行,所以java所谓的跨平台就是在不同平台上安装了不同的jvm,而在不同平台上生成的.class文件都是一样的,而.class文件再由对应平台的jvm解释成对应平台的机器码执行。 最后解释下机器码和字节码的区别: 一,机器码,完全依附硬件而存在~并且不同硬件由于内嵌指令集不同,即使相同的0 1代码 意思也可能是不同的~换句话说,根本不存在跨平台性~比如~不同型号的CPU,你给他个指令10001101,他们可能会解析为不同的结果~ 二,我们知道JAVA是跨平台的,为什么呢?因为他有一个jvm,不论那种硬件,只要你装有jvm,那么他就认识这个JAVA字节码,至于底层的机器码,咱不用管,有jvm搞定,他会把字节码再翻译成所在机器认识的机器码。

5.JDK和JRE的区别是什么?

       Java运行时环境(JRE)。它包括Java虚拟机、Java核心类库和支持文件。它不包含开发工具(JDK)--编译器、调试器和其他工具。Java开发工具包(JDK)是完整的Java软件开发包,包含了JRE,编译器和其他的工具(比如:JavaDoc,Java调试器),可以让开发者开发、编译、执行Java应用程序。

6.ArrayList 和 LinkedList 的区别?

一般大家都知道ArrayList和LinkedList的大致区别: 
     1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 
     2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针,因此LinkedList不 支持高效的随机元素访问。
     3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。 
ps:(ArrayList会比Vector快,他是非同步的,如果设计涉及到多线程,还是用Vector比较好一些 )

7 spring的核心功能是什么,介绍一下AOP以及怎么实现的,jdk代理和cglib代理的区别?

spring核心功能为:IOC和AOP
IOC:一个bean容器,其中的bean可实现控制反转(依赖注入)
AOP:面向切面编程

8.数据库的四大特性,事务的隔离级别,幻读。

9 计算机网络都学了什么(类似说书上的目录),OSI七层每层的任务,数据链路层的功能和协议。

10.数据结构都学了什么,排序算法最快的是哪种说说原理,哪些是不用申请额外空间的

11.介绍一下二叉平衡树

12.说说concrrent包下的类,然后问了一下Reentrantlock.



你可能感兴趣的:(java学习笔记)