阶段总结

一: 腾讯:

1.给定一霍夫曼树(9,7,5,2),求最小权值

2:设备使用率,进程为优先级剥夺机制

3:稳定排序

4:hashmap的平均查找长度

5:pv信号量

二:EMC

1:一个排序好的整数数组,长度为N,将前面K个元素和后面K个元素对调,编程求K的大小。

2:虚拟内存

虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。与没有使用虚拟内存技术的系统相比,使用这种技术的系统使得大型程序的编写变得更容易,对真正的物理内存(例如RAM)的使用也更有效率。

3:编程实现M个数组中N个连续数值相加最大值

4:list和vector对快速排序哪个效率更高

5:多态的原理和使用

6:fib的栈不够用怎么办

三:

1:boolean flag= i<10,先计算i<10再赋值给flag

2:机器人处理硬币,遇到正面向上抛,反面翻过来,最后的概率,反面1/3

3:hibernate的映射方式有哪些

  •     一对一单向关联
  •     一对一双向关联
  •     一对多单向关联
  •     多对一单向关联
  •     一对多/多对一双向关联
  •     多对多单向关联
  •     多对多双向关联

4:带表头的双向链表的insert操作

5:single模式

6:线程start和run的区别

在启动线程时候,有两种方法可以使用

start()为一半通用的启动线程的方法,通过调用线程类Thread的start()方法来启动线程,(此时线程并没有立刻执行,只是为就绪状态)然后线程Thread类通过调用run()方法来实现线程的操作,而其中的run()方法中的内容实为线程体,即为该线程所要执行的内容。run()方法执行结束,该线程也就终止了,cpu在执行其他的线程

如果将线程看做一般的Java类的话,则run()方法相当于普通的方法调用,通过普通的java类实例.run()来启动线程,即执行该方法体的内容。最终程序执行的只有主线程这一个。

7:jvm内存管理

java 把内存分四种: 
1、栈区(stack segment)— 由编译器自动分配释放,存放函数的参数值,局部变量的值等,具体方法执行结束之后,系统自动释放内存资源 
2、堆区(heap segment) — 一般由程序员分配释放,存放由new创建的对象和数组,jvm不定时查看这个对象,如果没有引用指向这个对象就回收 
3、静态区(data segment)— 存放全局变量,静态变量 和字符串常量,不释放 
4、代码区(code segment)— 存放程序中方法的二进制代码,而且是多个对象 共享一个代码空间区域 

在方法(代码块)中定义一个变量时,java 就在栈中为这个变量分配内存空间,当超过变量的作用域后,java 会自动释放掉为该变量所分配的内存空间;在堆中分配的内存由java 虚拟机的自动垃圾回收器来管理,堆的优势是可以动态分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的。缺点就是要在运行时动态分配内存,存取速度较慢;栈的优势是存取速度比堆要快,缺点是存在栈中的数据大小与生存期必须是确定的无灵活性。 

 

 

http://developer.51cto.com/art/201003/188753.htm

8:嵌套类和内部类

可以在另一个类内部定义一个类,这样的类是(嵌套类)nested cIass ,也称为(嵌套类型)nested type 。嵌套类最常用于定义执行类。

嵌套类是独立的类,基本上与它们的外围类不相关,因此 外围类和嵌套类的对象是互相独立的。嵌套类型的对象不具备外围类所定义的成员,同样外围类的成员也不具备嵌套类所定义的成员。嵌套类的名字在其外围类的作用域中可见,但在其它类作用域或定义外围类的作用域中不可见。嵌套类的名字将不会与另一作用域中声明的名字冲突。

嵌套类可以具有与非嵌套类相同种类的成员。像任何其他类一样,嵌套类使用访问标号控制对自已成员的访问。成员可以声明为pubIic 、 private或 protected。外围类对嵌套类的面员没有特殊访问权,并且嵌套类对其外围类的面员也没有特殊访问权。

嵌套类定义了其外围类中的一个类型成员,像任何其他面员一样,外围类决定对这个类型的访问。在外围类的pubIic部分定义的嵌套类定义了可在任何地方使用的类型,在外围类的protected部分定义的嵌套类定义了只能由外围类、友元或派生类访问 的类型,在外围为的private部分定义的嵌套类定义了只能被外围类或其友元访问的类型。

内部类,计算机面向对象程序设计概念。向对象程序设计中,可以在一个类的内部定义另一个类,这种类称为嵌套类(nested classes),它有两种类型,即静态嵌套类和非静态嵌套类。静态嵌套类使用很少,最重要的是非静态嵌套类,也即是被称作为内部类(inner)。内部类是JAVA语言的主要附加部分。内部类几乎可以处于一个类内部任何位置,可以与实例变量处于同一级,或处于方法之内,甚至是一个表达式的一部分。

 

http://blog.cfan.com.cn/html/89/178889-282023.html

但是,内部类和嵌套类的区别在于:

1.         嵌套类是静态的,而内部类不是,也就是说嵌套类的实例化不需要外部类的实例。但是内部类是需要这个实例的。

2.         嵌套类可以任意声明静态成员,内部类不允许声明除了编译时常量以外的任何静态成员。这一限制也适用于静态初始化函数。

3.         嵌套类都是命名的,匿名的类声明不能声明运行时静态成员(不管声明是不是静态的)

 

9:面向对象的三大特征:

封装、继承、多态 。

 

http://kidiaoer.iteye.com/blog/1010523

10:java内存泄露情况

java中的内存泄露的情况:长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄露,尽管短生命周期对象已经不再需要,但是因为长生命周期对象持有它的引用而导致不能被回收,这就是java中内存泄露的发生场景,通俗地说,就是程序员可能创建了一个对象,以后一直不再使用这个对象,这个对象却一直被引用,即这个对象无用但是却无法被垃圾回收器回收的,这就是java中可能出现内存泄露的情况,例如,缓存系统,我们加载了一个对象放在缓存中(例如放在一个全局map对象中),然后一直不再使用它,这个对象一直被缓存引用,但却不再被使用。
检查java中的内存泄露,一定要让程序将各种分支情况都完整执行到程序结束,然后看某个对象是否被使用过,如果没有,则才能判定这个对象属于内存泄露。

如果一个外部类的实例对象的方法返回了一个内部类的实例对象,这个内部类对象被长期引用了,即使那个外部类实例对象不再被使用,但由于内部类持久外部类的实例对象,这个外部类对象将不会被垃圾回收,这也会造成内存泄露。 
http://www.ibm.com/developerworks/cn/java/l-JavaMemoryLeak/index.html     11:java的海量数据排序   http://www.cnblogs.com/foreverking/articles/2050084.html  12:java多线程编程  http://lavasoft.blog.51cto.com/62575/27069/  

 

你可能感兴趣的:(java,类,职场,休闲,虚拟内存)