常见基础知识问题(java sde)

1. 面向对象编程的特点

面向对象语言刻画客观系统较为自然,便于软件扩充与复用。有四个主要特点:

(1)识认性,系统中的基本构件可识认为一组可识别的离散对象;

(2)类别性,系统具有相同数据结构与行为的所有对象可组成一类;

(3)多态性polymorphism,对象具有惟一的静态类型和多个可能的动态类型;简单来说就是一个程序中同名的多个不同方法共存的情况,通常使用方法的重载(overload, 不同变量,同一类或父子类)和重写(override,同一变量父类子类)来实现类的多态性

(4)继承性Inheritance,在基本层次关系的不同类中共享数据和操作。简单来说就是使子类的对象拥有父类的全部属性和行为,同时可以增添自己的所特有的属性和行为。这样可以节省写共同具有的属性和方法代码的时间,有利于代码的复用,这就是继承的基本思想。

(5)Encapsulation封装性,将对象的属性和行为封装起来,而将对象的属性和行为封装起来的载体是类,类通常对用户隐藏其实现的细节,这就是封装的思想


它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性,对象里的程序可以访问及经常修改对象相关连的数据。

传统的程序设计主张将程序看作一系列函数的集合,或者直接就是一系列对电脑下达的指令。面向对象程序设计中的每一个对象都应该能够接受数据、处理数据并将数据传达给其它对象,因此它们都可以被看作一个小型的“机器”,即对象


2. java的特点

优点:简单、安全、稳定、跨平台Cross-platform language
缺点:需要运行环境、不适合开发桌面应用程序。正是由于为了跨平台的功能,为了极度的伸缩能力,所以极大的增加了产品的复杂性。


3. process和thread

由于一个进程可以有多个线程,线程可以被认为是“轻量级”的过程。一般来说,进程是资源的分配单位,线程是CPU在进程内切换的单位,线程属于进程。

4. interface and abstract

相同点:

  (1)都是上层类的抽象层。

(2)都不能被实例化 

不同点:

 (1)一个类只能extend一个父类(可具体,可抽象),可以implement很多接口

 (2)抽象类可以有非抽象方法,这样子类可以直接继承。但是接口只能有抽象方法。

接口是对动作的抽象,而抽象类是对根源的抽象。


5. static method, static class, static variable

静态有一些特点:

1.全局唯一,任何一次的修改都是全局性的影响

2.只加载一次,优先于非静态

3.生命周期从JVM 加载开始到JVM卸载结束。

(4.使用方式上不依赖于实例对象)


对静态对象(方法,变量)来说,有如下特点:

1.静态对象的数据在全局是唯一的,一改都改。非静态的东西你修改以后只是修改了他自己的数据,但是不会影响其他同类对象的数据。 

2. 引用。直接用 类名.静态方法名  或者  类名.静态变量名 就可引用并且直接可以修改其属性值,不用get和set方法。

另外:static final用来修饰成员变量和成员方法,可简单理解为“全局常量”。对于变量,表示一旦给值就不可修改;对于方法,表示不可覆盖。

声明为static的方法有以下几条限制:

1. 它们仅能调用其他的static 方法
2. 它们只能访问static数据
3. 它们不能以任何方式引用this 或super(this涉及到对象,super 与继承有关)

静态内部类(静态类只能是内部类)是指在一个类的内部,又定义了一个用static修饰的类
1. 首先,用内部类是因为内部类与所在外部类有一定的关系,往往只有该外部类调用此内部类。所以没有必要专门用一个Java文件存放这个类。如果一个类要被声明为static的,只有一种情况,就是静态内部类。
2. 静态方法、静态成员变量。它唯一的作用就是随着类的加载(而不是随着对象的产生)而产生,以致可以用类名+静态成员名直接获得。这样静态内部类就可以理解了,它可以直接被用 外部类名+内部类名 获得。


6. hashmap,hashtable,hashset

HashMap与HashTable

相同点:

 Map与table, 都属于 Map 接口的类,实现了将唯一键映射到特定的值上

不同点:

 (1)HashMap 类没有分类或者排序,它允许一个 null 键和多个 null 值。Hashtable 类似于 HashMap,但是不允许 null 键和 null 值。

 (2)HashTable比 HashMap 慢,因为它是同步的。Hashtable: 效率低,线程安全;HashMap: 效率高,线程不安全。

HashMap和HashSet

 (1)事实上HashSet内部就是使用Hashmap实现的,和Hashmap不同的是它不需要Key和Value两个值。 

 (2)HashSet是set的一个实现类,hashMap是Map的一个实现类.

 (3)HashSet以对象作为元素,而HashMap以(key-value)的一组对象作为元素,且HashSet拒绝接受重复的对象.


7. arraylist,linkedlist

LinkedeList和ArrayList都实现了List接口.

(1)它们之间最主要的区别在于ArrayList是可改变大小的数组,而LinkedList是双向链接串列(doubly LinkedList)

(2)Arraylist使用索引在数组中搜索和读取数据。linkedlist需要遍历。

(3)添加和删除数据linkedlist更快。

(4)linkedlist占用内存更多

8. heap是什么.

 堆通常一个可以被看做一棵树的数组对象。子节点和父节点有着固定的大小关系。

建立heap的时间为O(n),调整的时间为O(logn)。堆排序需要建堆、每次poll调整一次,所以时间复杂度为O(n+nlogn)=O(nlogn)

9. 什么是死锁

当两个以上的运算单元,双方都在等待对方停止运行,以获取系统资源,但是没有一方提前退出时,就称为死锁。

例:P1、P2两个process都需要资源才能继续运行。P1拥有资源R2、还需要额外资源R1才能运行;P2拥有资源R1、还需要额外资源R2才能运行,两边都在互相等待而没有任何一个可执行。

10. Exception

Exception 类是 Throwable 类的子类。除了Exception类外,Throwable还有一个子类Error 。

Java 程序通常不捕获错误。错误一般发生在严重故障时,它们在Java程序处理的范畴之外。(如JVM溢出等)

IOException必须处理。RuntimeException可以不被处理

总结了一下JAVA中常见的几种RuntimeException,大约有如下几种:
NullPointerException - 空指针引用异常
ClassCastException - 类型强制转换异常。
IllegalArgumentException - 传递非法参数异常。
ArithmeticException - 算术运算异常
ArrayStoreException - 向数组中存放与声明类型不兼容对象异常
IndexOutOfBoundsException - 下标越界异常(array,string)
NegativeArraySizeException - 创建一个大小为负数的数组错误异常
NumberFormatException - 数字格式异常
SecurityException - 安全异常
UnsupportedOperationException - 不支持的操作异常

11.final

final在Java中是一个保留的关键字,可以声明成员变量、方法、类以及本地变量。一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如果你试图将变量再次初始化的话,编译器会报编译错误。

(变量)凡是对成员变量或者本地变量(在方法中的或者代码块中的变量称为本地变量)声明为final的都叫作final变量。final变量经常和static关键字一起使用,作为常量。

(方法)final也可以声明方法。方法前面加上final关键字,代表这个方法不可以被子类的方法重写。如果你认为一个方法的功能已经足够完整了,子类中不需要改变的话,你可以声明此方法为final。final方法比非final方法要快,因为在编译的时候已经静态绑定了,不需要在运行时再动态绑定。

12. auto boxing (java)

在javase5之前,如果想要把基本数据类型作为对象来操作,就需要采用对应的对象,来把它们打包才行。javase5之后可以编译器自动装箱和拆箱。

  • byte
  • short
  • int
  • long
  • float
  • double
  • boolean
  • char

但是要注意一些特殊情况:比如自动装箱时,对于值从-128-127之间的数,被装箱后,会被放在内存中进行重用,

如果超出了这个值的范围就不会被重用的。

13. private,public, protected,default



14. 关系型数据库和非关系型数据库

no relational sql, sql

关系型数据库:

1.有固定的表结构

    易于理解,sql通用,完整易于维护。

    可扩展性较低。并发性较低。

    vs key value 耦合性高

2.事务的一致性

    如银行操作系统必须保持一致性。网站则需求不高。

    关系型数据库为了维护一致性所付出的巨大代价就是其读写性能比较差(一些网站用memcache)

3.数据的持久存储,尤其是海量数据的持久存储



补充问题:

http://www.importnew.com/10980.html

15. HDFS 

Hadoop Distributed File System ( HDFS )

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值