java笔试面试中的坑

1.关于类型初始化

对于类的成员变量,编译系统会自动赋予初值,但必须先定义才能使用,可以不必初始化

类的成员数据类型的默认值是:

boolean:false  byte:0  short:0  char:‘\u0000‘  int:‘0‘  float:0.0F  double:0.0  object:null

但局部变量,不但要先定义,而且还必须要初始化,否则会报错。

******************************************************************************************

2.传值与传引用

java中8种基本数据类型,在传入方法时,是将其副本传入方法中,在方法中对其操作,当方法返回时,其值仍保持方法调用前的状态。

其他类型,例如map,list,数组,等对象传入方法是,是将其引用直接传入,在方法中对其操作,当方法返回时,方法中改变的数值仍将保留。

测试代码:

******************************************************************************************

3.Map中的参数类型,必须为对象,不能使基本类型,要重写hashcode和equles两个方法。List也是一样。
******************************************************************************************

4.java:[类型(字节)] byte(1) short(2) int(4) long(8) flout(4) double(8)(可有E表示幂次) char(2) boolean(1bit)

 c: char(1) int(4)  short int(2)  long int(4)  double(8)

******************************************************************************************

5.HashMap与HashTable的区别

(1)HashMap、HashTable均实现了Map接口。HashTable继承与Dictionary类。HashMap中可以有null Key和null Value,但其Key必须唯一。而HashTable中不允许NULL值的出现。

(2)HashMap不是线程安全的,HashTable是线程安全的。HashMap是HashTable的轻量级实现。

******************************************************************************************

6.Collection、List、Set、Map的关系

(1)Collection是List、Set的基接口。List在Collection的基础上增加了有序。Set在Collection的基础上增加了唯一。并且JAVA JDK不提供直接继承Collection的类,只有继承与List和Set的类。有iterator()方法。可以遍历其子项。

(2)Map是与Collection并列的接口。是Key-Value的映射。

******************************************************************************************

7.ArrayList与Vector的区别

(1)同步性:Vector是线程安全的。ArrayList是线程不安全的。线程安全的弱点是,实现复杂,效率低。

(2)数据增长:当数据数目超出了数组的长度,则需要拓展数组的长度。ArrayList是延长原长度的50%,Vector是延长原数组的一倍。

******************************************************************************************

8.String、StringBuffer和StringBuilder

(1)本质比较:String是常量字符数组,当其值改变时,必须重新实例;StringBuffer是字符串变量,线程安全;StringBuilder也是字符串变量,非线程安全。

(2)速度比较:在改变长度或内容的条件下,StringBuilder>StringBuffer>String。注意String s = "a"+"b"+"c";在JVM中与String s = "abc";是等价的。

(3)StringBuffer可以理解为是一个String的字符缓冲区,他可以通过append和insert来改变其内容。append是在其尾追加内容,例如z引用当前内容是"start",执行z.append("le")后,其内容变为"startle"。而执行z.insert(4,"le")后,其内容变为"starlet"。StringBuilder是在5.0退出的StringBuffer的轻量级替代类,在无多线程共享变量的情况下,速度快。其中的方法与StringBuffer类似。

******************************************************************************************

9.switch(A){case B:}

其中A部分必须是int型的,或者能隐式转换到int型(byte,short,char,int),或者enum中的项。

B部分必须是单个的byte,short,char,int型,或者是final型,final型必须是编译时的常量。

******************************************************************************************

10.try{return;}finally{}中,return在finally执行之后执行。

******************************************************************************************

11.try{}catch{syso("1")}catch{syso("2")}finally{syso("3")} syso("4")

其中catch不能级联,当第一个catch结束后,将执行finally中的内容。执行完后,将继续顺序执行try..catch块后的内容。

******************************************************************************************

12.JAVA的JVM的内存可分为3个区:堆(heap)、栈(stack)和方法区(method)

参考:http://www.blogjava.net/yaoyaojj/archive/2011/07/31/355438.html

         http://java-mzd.iteye.com/blog/848635

******************************************************************************************

13.抽象类不能被实例化

******************************************************************************************

14.这些都是线程安全的

HashTable   Vector   StringBuffer  ConcurrentLinkedQueue    ConcurrentHashMap

******************************************************************************************

15.N各节点能组成多少种二叉树

h(n)= C(n,2n)/n+1

******************************************************************************************

16.Java里面对象的生命周期

在JVM运行空间里面,对象整个声明周期大致分为以下几个阶段:

  创建阶段(Creating)->应用阶段(Using)->不可视阶段(Invisible)->不可达阶段(Unreachable)->可收集阶段(Collected)->终结阶段(Finalized)->释放阶段(Free)

  【1】创建阶段:

  创建过程需要经过其中几步:

  为对象分配内存空间

  开始构造对象

  递归调用超类的构造方法

  进行对象实例初始化和变量初始化

  执行构造方法体

  【2】应用阶段特征:

  系统至少维护着对象的一个强引用(StrongReference)

  所有该对象的引用全部是强引用,除非我们显示声明了软引用、弱引用或者虚引用

  【3】不可是视阶段:

  不可视阶段就是我们在区域代码中不可以再引用它,就是强引用已经消失,一般情况我们把这个时候的对象设置为null,其主要目的是让JVM发现它,并且可以及时回收该对象所占用资源

  【4】不可到达阶段:

  不可达阶段的对象,在虚拟机所管理的对象引用根集合中再也找不到直接或间接的强引用,这些对象通常是指所有线程栈中的临时变量以及相关引用,这种对象都是要预备回收的对象,但是这时候不能被GC直接回收。

  【5】可收集阶段、终结阶段、释放阶段:

  对象生命周期最后一个阶段,这种阶段的对象可能处于三种状态:

  垃圾回收器发现对象已经不可达

  finalize方法已经被执行

对象已经被重用

******************************************************************************************

17.Hibernate缓存机制

一级缓存就是Session级别的缓存,一个Session做了一个查询操作,它会把这个操作的结果放在一级缓存中,如果短时间内这个session(一定要同一个session)又做了同一个操作,那么hibernate直接从一级缓存中拿,而不会再去连数据库,取数据。二级缓存就是SessionFactory级别的缓存,顾名思义,就是查询的时候会把查询结果缓存到二级缓存中,如果同一个sessionFactory创建的某个session执行了相同的操作,hibernate就会从二级缓存中拿结果,而不会再去连接数据库。参考:http://blog.csdn.net/xiashan17/article/details/6049664

******************************************************************************************

18.Hibernate常见面试问题

http://blog.163.com/peripateticism_lxt/blog/static/183211290201139102743814/

******************************************************************************************

19.主键与索引关系

创建一个主键,则同时自动创建了一个同名的唯一索引,与之关联。删除主键,则主键约束和对应的唯一索引都删除了。

存在主键约束,则肯定存在与之对应的唯一索引,而存在唯一索引,不一定对应着有主键约束。

******************************************************************************************

20.将UTF-8字符转码成ISO-8859-1

String name =new String("SOI".getBytes("ISO-8859-1"),"ISO-8859-1");
String nameUtf = new String(name.getBytes("UTF-8"),"UTF-8");
System.out.println(nameUtf);

******************************************************************************************

21.B tree

http://blog.csdn.net/sws9999/article/details/3018519

******************************************************************************************

22.java常见笔试面试题。。有这一个就够了

http://www.blogjava.net/fanyingjie/archive/2007/06/27/126467.aspx

******************************************************************************************

23.java类加载过程,及存在的问题

http://www.dewen.org/q/7140

******************************************************************************************

时间: 2024-12-18 10:51:35

java笔试面试中的坑的相关文章

Java笔试面试题目(一)

每日一句:没有一劳永逸的幸福,只有先苦后甜的努力!加油! java应届生或自学初学者笔试面试题目总结,希望对大家有帮助,题目来自自己学习总结和老师讲解,网络资源,书籍资料.敲出来大家看,每次更新10+道题目,希望大家能找到一份好工作. 第一部分:基础部分 基础部分的包括:基本语法,类似相关的语法,内部类.继承.异常.线程.集合.IO.虚拟机.其他. 1 一个".Java"源文件中是否可以包含多个类(不是内部类)?有什么限制?可以有多个,但是只能有一个public的类,并且public的

Java 笔试面试 基础篇 一

1. Java 基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法, 线程的语法,集合的语法,io 的语法,虚拟机方面的语法. 1.一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以有多个类,但只能有一个public 的类,并且public 的类名必须与文件名相一致. 2.Java 有没有goto? java 中的保留字,现在没有在java 中使用. 3.说说&和&&的区别. &和&am

java笔试面试01

今天给大家分享一下小布去广州华南资讯科技公司笔试和面试的过程. 过程:1.HR面试  2.笔试  3.技术面试 小布下午两点到达,进门从前台领了一张申请表,填完之后带上自己的简历到4楼就开始HR面试.HR是个很nice很漂亮的大姐姐,面试过程很简单,以介绍公司和了解小布的基本情况为主,大概问了20分钟左右之后,她拿了笔试题目给我做.30分钟之后,技术总监过来面试.技术总监人也很好,笑容满面,一点都不紧张,大概也是20分钟左右的面试.面试完就可以回去了.据小布了解,这是一家实习一般般,但正式员工待

Java笔试面试

1. 2017-05-05 笔试 1. Error和Exception的异常 Error表示紧靠程序无法恢复的严重错误,如内存溢出,动态链接失败.如果遇到该异常,除了经历使程序安全退出,在其他方面无能无力. Exception由应用程序抛出和处理的非严重错误. 2. 在Java中一个类被声明final类型,表示什么意思. 修饰一个类时,表示该类不可以被继承.修饰方法时,表示该方法不可被重写.修饰属性时,属性将变成"常亮",特点:必须赋初值,不可以在改变值.目地:保护属性. 3. 谈谈f

Java 笔试面试 算法编程篇 一

方法 1 /* ********************************************************************************** 1.编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中, a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔. *************************************************************************

Java技术开发中的坑

1.(2014/05/28)struts2中使用eclipse自动获取getter和setter方法的坑 今天着实被eclipse坑了一把,平时遇到get和set方法时,我都是通过eclipse自动生成,今天在做数据查询的时候,有一个变量首字母小写,第二个字母大写(即tName),我也跟平常一样在struts2的action中用eclipse自动生成getter和setter方法,然后调试,发现无论传给tName什么参数,它接收的都是null,当时,我很纳闷,试了很就发现还是不成功,就把参数换成

JAVA笔试面试题目集锦

来自棱镜学院-在线IT教育www.prismcollege.com 1.数据库,比如100用户同时来访,要采取什么技术解决:(JDBC) 答:可采用连接池.控制数据库的连接数量 2.String,  StringBuffer StringBuilder的区别.(Core Java) 答:String是一组不可变的unicode编码的字符序列: StringBuffer的长度是可变的,如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String

Java笔试面试高频题目

1.项目经历,项目流程图,程序执行流程 2.进程间通信 (1)管道(pipe)和有名管道(FIFO)(2)信号(signal)(3)消息队列(4)共享内存(5)信号量(6)套接字(socket) 3.new 与 mallocal 区别 4.TCP三次握手连接与断开 5.算法链表,判断单项链表是否存在环 6.数组,存储一到一百,少了一个,乱序,找出缺少的. 7.LinkedList 和ArrayList 的区别 存储方式不一样,前者是以链表方式存储,对增删有优势,对查找没有优势,后者是以数组方式存

12种排序算法:原理、图解、动画视频演示、代码以及笔试面试题目中的应用

出处:http://blog.csdn.net/han_xiaoyang/article/details/12163251. 声明:版权所有,转载请注明出处,谢谢. 0.前言 从这一部分开始直接切入我们计算机互联网笔试面试中的重头戏算法了,初始的想法是找一条主线,比如数据结构或者解题思路方法,将博主见过做过整理过的算法题逐个分析一遍(博主当年自己学算法就是用这种比较笨的刷题学的,囧),不过又想了想,算法这东西,博主自己学的过程中一直深感,基础还是非常重要的,很多难题是基础类数据结构和题目的思想综