用友电话面试后的几个问题总结
2016-06-19 21:35
459 查看
前几天参加了用友的笔试之后接到了面试电话,询问了几个Java相关的基础问题,只恨自己学识尚浅,对Java的学习过于少,其中印象深点的问题有以下几个:
1.简述一下什么是MVC?
答:MVC即model-view-controller,M指数据模型,V指视图,C指的是控制器,它使程序的输入、处理以及输出分离开来,增强了程序的可移植性。
2.简述一下String与StringBuffer的区别。
答:实际上还有一个叫做StringBuilder的东西。在执行速度上面来看,StringBuilder>StringBuffer>String。其中,StringBuilder以及StringBuffer是字符串变量,而String是字符串常量。这里可能有疑问,String类型怎么会是常量呢?例如,String str = asd;str = str + "f";结果为:asdf,String类型的str明明是可以改变的量。然而实际上这里JVM对此的操作是:先创建一个String类型变量赋值为asd,然后再创建一个String类型的str,然后再加上f,原来的str已被JVM的垃圾回收机制回收了,变为了新创建的str,其值为asdf,因此String类型的变量操作实际上是在不断地新建对象,因此执行效率会比较低。而StringBuffer以及StringBuilder为字符串变量,它们的操作均在同一个对象上进行,不会新建对象,因此效率更高。
扩展:StringBuffer以及StringBuilder的区别在于StringBuffer是线程安全的,而StringBuilder是非线程安全的。
三者使用总结:
1.String:数据量很少时使用;
2.StringBuffer:多线程且数据量不小使使用;
3.StringBuilder:单线程且数据量不小时使用。
3.简述一下重写与重载的区别。
答:重写是指子类的方法与父类方法重名时(参数类型、参数个数均一样),子类对父类方法的重新实现,子类调用这个方法名时调用的是子类的方法,而父类的同名方法则被隐藏了起来(若想调用父类的此方法,可以使用super关键字进行调用)。
重载则是完全不同的概念,重载是指在同一个类中,可能有多个同名的方法,而这些方法在参数上有区别,因此为不同的方法,类调用这些方法时,将根据所给的实参来自动判断调用哪个方法,最典型的例子就是构造方法的重载,一个类可以有多个构造方法,有默认的无参构造方法,也有自定义的带参构造方法。
4.简述一下抽象类与接口类的区别。
答:抽象类中必须包含抽象方法,但也可以含有非抽象的方法,抽象类中可以含有常量也可以含有变量,而接口中只含有抽象方法,不可以含有非抽象方法,只能含有常量(一般为静态常量),不可含有变量。其中抽象类不可以用于创建对象,因为其中的抽象方法没有具体的实现,只能由子类继承后来创建对象,并对抽象方法给出具体的实现,而接口可以被多个类来实现(在访问权限允许的情况下)。
这次面试的感觉大概就这么多吧,望以后深入钻研学习,学海无涯,不要停下学习的脚步,下次机会来临时不要再恨词穷。
1.简述一下什么是MVC?
答:MVC即model-view-controller,M指数据模型,V指视图,C指的是控制器,它使程序的输入、处理以及输出分离开来,增强了程序的可移植性。
2.简述一下String与StringBuffer的区别。
答:实际上还有一个叫做StringBuilder的东西。在执行速度上面来看,StringBuilder>StringBuffer>String。其中,StringBuilder以及StringBuffer是字符串变量,而String是字符串常量。这里可能有疑问,String类型怎么会是常量呢?例如,String str = asd;str = str + "f";结果为:asdf,String类型的str明明是可以改变的量。然而实际上这里JVM对此的操作是:先创建一个String类型变量赋值为asd,然后再创建一个String类型的str,然后再加上f,原来的str已被JVM的垃圾回收机制回收了,变为了新创建的str,其值为asdf,因此String类型的变量操作实际上是在不断地新建对象,因此执行效率会比较低。而StringBuffer以及StringBuilder为字符串变量,它们的操作均在同一个对象上进行,不会新建对象,因此效率更高。
扩展:StringBuffer以及StringBuilder的区别在于StringBuffer是线程安全的,而StringBuilder是非线程安全的。
三者使用总结:
1.String:数据量很少时使用;
2.StringBuffer:多线程且数据量不小使使用;
3.StringBuilder:单线程且数据量不小时使用。
3.简述一下重写与重载的区别。
答:重写是指子类的方法与父类方法重名时(参数类型、参数个数均一样),子类对父类方法的重新实现,子类调用这个方法名时调用的是子类的方法,而父类的同名方法则被隐藏了起来(若想调用父类的此方法,可以使用super关键字进行调用)。
重载则是完全不同的概念,重载是指在同一个类中,可能有多个同名的方法,而这些方法在参数上有区别,因此为不同的方法,类调用这些方法时,将根据所给的实参来自动判断调用哪个方法,最典型的例子就是构造方法的重载,一个类可以有多个构造方法,有默认的无参构造方法,也有自定义的带参构造方法。
4.简述一下抽象类与接口类的区别。
答:抽象类中必须包含抽象方法,但也可以含有非抽象的方法,抽象类中可以含有常量也可以含有变量,而接口中只含有抽象方法,不可以含有非抽象方法,只能含有常量(一般为静态常量),不可含有变量。其中抽象类不可以用于创建对象,因为其中的抽象方法没有具体的实现,只能由子类继承后来创建对象,并对抽象方法给出具体的实现,而接口可以被多个类来实现(在访问权限允许的情况下)。
这次面试的感觉大概就这么多吧,望以后深入钻研学习,学海无涯,不要停下学习的脚步,下次机会来临时不要再恨词穷。
相关文章推荐
- Google 面试题
- 程序员、技术领导、管理者各有烦恼,你占了几条?ZZ
- java基础面试题整理(BAT)
- Leetcode 313. Super Ugly Number
- 【51CTO学院三周年】我的数据处理工程师入门之路
- ZooKeeper程序员指南
- 关于程序员开发效率的悖论
- Android面试题
- 程序员,如何写好文档?
- 一个合格的程序员应该读过哪些书
- iOS面试题整理(下) 仔细研读受益匪浅
- 《前端面试江湖》
- 《C编程专家》:程序员面试(附2)
- 史上最全的iOS面试题及答案
- iOS面试题整理(上) 仔细研读受益匪浅
- 海量数据处理面试题与十个方法大总结
- 面试金典系列--维护x的秩
- JAVA多线程和并发基础面试问答(转载)
- Java线程面试题 Top 50
- 一道简单面试题和霍尔规则