A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马之王 中级黑马   /  2015-4-13 16:52  /  654 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


1.heapstatck有什么区别
  Java内存分为两类,一类是栈内存,一类是堆内存。栈内存是指程序进入一个方法时,会为这个方法单独非配一块私属存储空间,用于存储这个方法内部的局部变量,当这个方法结束时,分配给这个方法的栈会释放,这个栈中的变量也会随之释放。
堆是与栈作用不同的内存,一般用于存放不放在当前方法中的那些数据,例如,使用new创建的对象都放在堆里,所以它不会随方法的结束而消失。方法中的局部变量使用final修饰后,放在堆中,而不是栈中。
2.GC是什么?为什么要有GC
GC是垃圾收集的意思,内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法
3.什么是Java序列化,如何实现Java序列化?或者请解释Serializable接口的作用。
我们有时候将一个Java对象变成字节流的形式传出去或者从一个字节流中恢复成一个Java对象,例如要将java对象存储到硬盘上或者传送到网络上的其他计算机,这个过程我们可以自己写代码去把一个Java对象变成某个格式的字节流再传输,但是JRE本身就提供了这种支持,我们可以调用outputStreamwriteObject方法来做,如果让Java帮我们做,要被传输的对象必须实现serializable接口,这样javac编译的时候就会进行特殊处理,编译的类才可以被writeobject方法操作,这就是所谓的序列化。需要被序列化的类必须实现serializable接口,该接口是一个mini接口,其中没有需要实现的方法,implements serializable只是为了标注该对象是可以被序列化的。
4.描述一下jvm加载class文件的原理机制
Jvm中类的装载是由classloader和它的子类来实现的,Java classloader是一个重要的java运行时系统组件,他负责在运行时查找和装入类文件的类
5.线程的基本概念,线程的基本状态以及状态之间的关系
一个程序中可以有多条执行线索同时执行,一个线程及时程序中的一条执行线索,每个线程上都关联有要执行的代码,一个线程可以有多段程序同时运行,每个程序至少都有一个线程,即main方法执行的那个线程。如果只是一个cpu,它怎么能够同时执行多段程序呢?从宏观上看cpu一会执行a线索,一会执行b线索,切换时间很快,给人的感觉是a,b在同时运行。
状态:就绪,运行,synchronize阻塞,waitsleep挂起,结束wait必须在synchronized内部调用。
调用线程的start方法后线程进入就绪状态,线程调度系统将就绪状态的线程为运行状态,遇到synchronized语句时,由运行转为阻塞,当synchronized获得解锁后,由阻塞转为运行。在这中情况可以调用wait方法转为挂起状态,当线程关联的代码执行完后,线程变为结束状态
6.是否可以继承String
   String类是final类故不可继承
7.是否可以从一个static方法内部发出对非static方法的调用
不可以,因为非static方法是要与对象关联在一起的,必须创建一个对象那个后,才可以在该对象上进行方法调用,而static方法调用时不需要创建对象,可以直接调用。也就是说,当一个static方法被调用时,可能还没有创建任何实例对象,如果从一个static方法中发出对非static方法的调用,那个非static方法是关联到哪个对象上呢,这个逻辑无法成立,所以,不可以在static方法张调用非static方法
8.面向对象的特征有哪些
   封装:
       封装是保证软件部件具有优良的模块性的基础,封装的目标是实现软件部件的“高内聚,低耦合”在面向对象的编程语言中,对象是封装的基本单位。面向对象的封装就是把描述一个对象的属性和行为的代码封装在一个模块中
   继承:
在定义和实现一个类的时候,可以在一个已经存在的类的基础上来进行,把这个已经存在的类所定义的内容作为自己的内容,并可以加入若干新的内容,或修改原来的方法使之更适合特殊的需求,这就是继承。继承是子类自动共享父类数据和方法的机制,这是类之间的一种关系,提高了软件的可重用行和可扩展性。
   多态:
       是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而在程序运行期间才确定,即一个引用变量到底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为程序运行时才能确定具体类,这样不用修改程序源代码,就可以让引用变量绑定到各种不同的类实现上,让程序选择多个运行状态
   抽象:
       抽象就是找出一些事物相似和共性之处,然后将这些事物归为一个类,这个类只考虑这些事物的相似和共性之处,并且会忽略与当前主题和目标无关的那些方面
9.Java中实现多态的机制是什么
   靠的是父类或接口定义的引用变量可以指向子类或具体实现类的实例对象,而程序调用的方法在运行期才动态绑定,就是引用变量所指向的具体实例对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法


以上内容都是我手打出来的,如果你感觉到对你有用处,请赞一个让我知道我的努力没白费让你有所收获,大家共同进步!!!

4 个回复

倒序浏览
好的,学习中,挺有用的
回复 使用道具 举报
不错顶顶顶顶
回复 使用道具 举报
纯手打的话,还是感谢楼主的....
回复 使用道具 举报
貌似基础面试题都是理论部分,看来要多看看理论了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马