1.简要介绍java程序的健壮性。
答:JAVA程序会在编译和运行的时候自动的检测可能出现的错误,而且它是一种强类型语言,对于类型的检查很严格,而且它的垃圾回收机制也有效的避免了内存的泄漏。
2.为什么说java语言是完全面向对象的?(其实我觉得它不是完全面向对象的)
答:因为它不支持任何面向过程的程序设计技术它的所有程序设计技术都是用类来实现的。
另答:因为它有8种简单数据类型不是面向对象的,可以直接使用它,用static申明的变量或方法不是面向对象的,因为它不属于任何一个对象,要调用它可以直接使用,不用对它进行实例化(这种方法还在争论中)。
3.简要介绍java如何实现安全性。
答:首先JAVA删除了指针这就避免了非法的内存操作,所有对内存的操作都必须通过对象的实例来实现。而且当我们从网上下载代码执行是它的安全系统能确保恶意程序不会随便访问我们本地计算机的资源。
4.为什么说java是解释性的?
答:因为我们在执行JAVA文件时,编译器会先把代码译成字节码文件,这是一种中间代码,然后JAVA解释器才进行执行。
5.简要介绍java的平台无关性。
答:JAVA程序是在虚拟机上执行的,只要安装了JAVA虚拟机它就可以以字节码的形式在任何平台上执行。
6.简要介绍java的多态性。
答:多态性是指同名的不同方法在程序中共存,系统根据不同的情况调用不同的方法实现不同的功能。实现多态性的方法有两种:覆盖实现,重载实现。
7.简要介绍java是强类型检查语言。
答:JAVA对数据类型的检查非常严格,在定义和用变量时必须先指定其类型而且它只允许数据类型的向上提升,而且不允许出现会出现数据丢失的附值(如把小数附给整形)。
8.int 和 Integer有什么区别?
答:int是简单数据类型(整形)而Integer是整形的封装类。
9.简要介绍String和StringBuffer的区别?
答:String类代表不可变字符串。在值创建之后就不能被改变。而StringBuffer是可变的字符序列,初始容量16字节,通过某些方法可改变其内容和长度。
10.简要介绍java的垃圾回收机制。
答:JAVA的垃圾回收机制就是:当一个对象没有任何引用时,该对象便会启动垃圾回收器调用finalize方法以配置系统资源或执行相关的清除操作。
1、面向对象编程(OOP):OOP最重要的思想是类,类是模板,从类中构造一个对象,即创建了这个类的一个实例;
2、封装:是把数据和行为结合在一起,并对对象使用者隐藏数据的实现过程,通常一个对象中的数据叫他的实例字段(instance field) ;
3、继承:Java中允许在已经存在的类的基础上构建新的类,当你继承一个已经存在的类时,那么你就复用了这个类的方法和字段,同时你可以在新类中添加新的方法和字段;
4、多态:在java中,对象变量是多态的;需要注意的是java中不支持多重继承;
5、类之间的关系:
use-a :依赖关系 ;
has-a :聚合关系 ;
is-a : 继承关系--例:A类继承了B类,此时A类不仅有了B类的方法,还有其自己的方法;
6、构造对象使用构造器:构造器是一种特殊的方法,它的作用是构造对象并对其初始化,
构造器特点:构造器可以有0个,一个或多个参数 ;
构造器和类名称是相同的;
一个类可以有多个构造器;
构造器没有返回值;
构造器一定是和new运算符一起使用的;
7、包(package):Java允许把一个或多个类放在一起成为一组,称作为包,以便于更好的管理,标准Java库分为许多包如java.lang、java.util、java,net等,包是分层次的,所有的java包都在java和javax包层次内;
8、重载:当多个方法具有相同的名字而含有不同的参数时,这时就发生了重载,编译器会选出调用哪个方法;
9、健壮特性:Java采取了一个安全指针模型,能有效防止重写内存和数据崩溃;
10、安全:Java可以用来构建防病毒和防攻击的系统,事实证明Java在防毒方面做的比较好;
11、可移植性:Java中对基本数据结构类型的大小和算法都有严格的规定,所以有很好的可移植性;
12、多线程:由于Java的机制,它处理多线程的过程很简单,Java把多线程实现交给底下操作系统或线程程序完成,所以多线程是Java作为服务器端开发语言的流行原因之一;
13、动态绑定:这是Java调用对象方法的机制;
14、Java中的每一个类都是从Object类扩展而来的;
15、内部类:一个内部类的定义是定义在另一个内部类中;
经验多的希望有一些深度或者广度的积累。比如说某些领域非常专注/专业,或者说在整体上有非常全面的认识和了解。工作时间长了就需要有一定的积累,不然怎么能够突出自己的特点呢?做互联网的就需要对性能、并发、分布式等专业领域有一些了解或者研究,哪怕有一些心得也不错。做企业开发的就需要对行业、稳定性、工具、理论等有些独有的理解,哪怕很初级、幼稚也行。具体点怎么说,比如你每天都是用struts/spring/hibernate/ibatis等等,那么对这些原理是否了解?背后的思想是否了解?
业界的认识和评测、比较是否了解?而不是仅仅知道怎么调用API,这远远不够。如果能够研究下源码,写一个类似的系统就更好了。说白了就是能够透过工具/技术本身发现一些规律或者说认识,剩下来的就是积累,也就是我们通常说的经验。还有一个方面就是对行业趋势的了解。技术不能够仅仅关注于技术本身,还需要对业绩的动态、趋势有些关注,这样才能不至于技术不断的更新而落后。这并不是说总是去追求新技术、新软件、新工具等,而是关注行业本身的发展。
另外还有一个很重要的经验积累,那就是解决问题的能力。很多同学同时觉得自己做了很多事情,但是让他说一两点比较突出的事情,就说不出来了,总是归结于事情本身比较简单,没有更多的发现和挖掘。其实有时候面试的人只需要了解当初解决问题的过程就行,从中发现个人在里面做了什么、怎么做、收获了什么。这就是经验的积累。企业归根结底是需要员工作做贡献的,因此需要有经验的人来帮助解决问题,那么曾经解决问题的能力和思路就很重要了。
对于没有多少经验的同学,比如刚毕业或者实习生等,那么就需要基础很好,然后有一些个人的认识。这些经验少的java同学一般面试者都不会为难他们,只需要把知道的、认识到的告诉面试者就行了,从而让面试者能够看到发展的潜力。很多人还是喜欢培养那些有发展潜力的同学,这些同学的进步都是非常迅速的。我个人总结其实只有一点,那就是要有“亮点”。说白了就是有自己独特的认识和理解等才能在众多差不多的同学中脱颖而出。既然不能做全才,那么就做“专才”。这些java找工作心得体验分享希望能助你找到一份好工作。总之,面试时技能是基础,表达是辅助。是块金子,在哪里都会放出光彩!