Java初级程序员面试

361 阅读12分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

  • 个人简介:微信公众号关注:SteveCode。为您分享更多的知识学术。生于忧患死于安乐
  • 专注Java技术干货分享,Java基础技术、数据结构、相关工具、Spring全家桶、intellij idea......

一、Java基础部分

1、使用length属性获取数组长度,

获取数组长度length

String.length()

集合.szie()

2、public、private、protected、friendly区别

public公共的

private私有的

protected父类与同一包下

friendly 同一包下

2、Collection和Collections区别

Collection接口

Collections工具类可以提供一些很多的静态方法

3、String s=new String(‘xyz’);创建了几个object对象

创建两个对象 ,堆内存有两个不同的地址值。s\new String();

4、short s1,s1=s1+1;是否有错?

有错。s1=s1+1结果是int类型,而 s 是short类型,需要强制类型转换。

s1 += 1会自动强制类型转换为int类型。

小类型转变大类型需要转换。

5、Overriding和Overloading区别

方法的重写、与重载

类:重写发生在子类,重载发生在同一个方法类

重写:方法名相同,参数及类型相同,返回值相同

重载:方法名相同,参数参数可以不同,返回值可以不同。

6、Set里面的元素不能重复,用什么方法区分重复与否。

equals()

7、给出一个常见的runtime exception。

空指针异常

算术异常

数组下标越界异常

类型转换异常

 

8、error和exception区别。

error错误,是程序本身无法处理的异常。导致程序中断、程序无法处理这些错误

exception ,异常可以捕获的异常,程序本身可以处理的异常。

 

9 、List和Set是否继承自Collection接口。

继承

10、abstract class和interface 的区别。

一个是抽象类一个是接口

抽象方法不同;

实例

继承

实现

定义变量

 

11、是否可以继承String类。

不可以,因为string被final修饰

12、try{}里有一个return语句,紧跟在try后的finally里的code会不会被执行,什么时候执行,return前执行还是return后执行。

会执行,在return之前

13、最有效率的方法算2*8等于几

2<<3

14、两个对象值相同,x.equal(y)==true,但是却可有不同的hashcode,这句话对不对。

不对,equal为true,那么hashcode也一定相等。

equal相同那么hashcode相同 hashcode相等,那么equal不一定相等

15、值传递和引用传递

基本类型转递都是值传递。

Java中一般没有引用传递

16、switch是否作用在byte、long、string上。

String在Java1.7之后可以作用上

可以作用在枚举上

可以作用与byte与byte的包装类上

不可以作用在long与long的包装类上、double与包装类上

17、ArrayList和Vector区别,HashMap和Hashtable区别(了解这几个类的底层jdk中的编码方式)。

18、GC是什么,为什么要有GC,简单介绍GC。

gc垃圾回收,自动回收内存的目的。

19、float f=3.4是否正确。

不对,3.4是int类型,

写成float=3.4f

20、介绍Java中的Collection framework。

list--set--map

ArrayList     hashset       hashmap

LinkList  TreeSet   TreeMap

vector  Linkedhashset  Linkedhashmap

21、Collection框架中实现比较方法

自然排序:Comparable

定制排序:Comparator

22、String和Stringbuffer的区别

23、final、finally、finalize区别

24、面向对象的特征

25、String是最基本的数据类型吗。

不是,引用数据类型

26、运行时异常和一般异常的区别

运行时异是jvm抛出的异常,(运行时的程序错误)需要修改源代码。

一般异常是程序可抛出的异常。(必须处理,不然编译不通过)

www.cnblogs.com/wfhking/p/9…

27、说出ArrayList、Vector、Linkedlist的存储性能和特性

就是介绍一下这些集合

28、heap和stack区别

堆栈

堆主要存对象地址值,对象的属性值。

stack主要存对象的引用,及属性

29、Java中的异常处理机制的简单原理和应用

异常使用就是使用了面向对象的的方式处理异常。把程序会发生的每一种异常都放在一个对象 中。

blog.csdn.net/qq_36071795…

30、垃圾回收的原理和特点,并考虑2种回收机制

机制:标记回收、增量回收

有点:Java开发人员不必考虑去回收对象,gc帮我们做了,有效的防止了内存的泄露。可以有效的使用内存。

blog.csdn.net/u011190556/…

31、说出一些常用的 集合类和方法

size()、add()、remove()、addAll()、removeAll()。。。。

32、描述一下JVM加载Class文件的原理和机制

Java加载类:通过类加载器加载到jvm中才能运行。

blog.csdn.net/weixin_4213…

装载 --链接--初始化

 

33、排序的几种方法,了解。

冒泡排序、插入排序、选择排序、

34、Java语言如何进行异常处理,throws,throw,try catch finally代表什么意义?

try块中可以抛出异常吗

blog.csdn.net/cwh615/arti…

try块表示程序正常的业务执行代码。如果程序在执行try块的代码时出现了“非预期”情况,JVM将会生成一个异常对象,这个异常对象将会被后面相应的catch块捕获。

catch块表示一个异常捕获块。当程序执行try块引发异常时,这个异常对象将会被后面相应的catch块捕获。

throw用于手动地抛出异常对象。throw后面需要一个异常对象。

throws用于在方法签名中声明抛出一个或多个异常类,throws关键字后可以紧跟一个或多个异常类。

finally块代表异常处理流程中总会执行的代码块。

对于一个完整的异常处理流程而言,try块是必须的,try块后可以紧跟一个或多个catch块,最后还可以带一个finally块。

try块中可以抛出异常。

35、一个’.java’源文件是否可以包括多个类,有什么限制。

可以有,但是只能有一个public修饰的类。public修饰的类就是类名

36、Java中有几种类型流,jdk为每种类型的流提供了一些抽象类以供继承,请分别说出它们是哪些类。

字节流、字符流、输入流、输出流

blog.csdn.net/Puzzle_48hc…

37、Java中会存在内存泄漏吗,请简单描述。

不一定,Java中有垃圾回收机制gc。可以不用的对象可以被回收。例如长的生命周期的对象可能会反生内存泄露。

内存泄露:对象或者变量一直占据在内存中

 

38、静态变量和实例变量的区别。

静态变量是在一个类中被static修饰的变量。

实例变量是:javaBean中的实体属性。

调用方式:

实例变量由对象的引用调用,而静态变量在类的加载过程中就会被初始化,调用方式类名.静态变量名,对象的引用.变量名

39、什么是Java序列化,如何实现java序列化。

Java对象转换成字节流的过程称为序列化。

字节流转换成Java对象的过程称为反序列化

Java类实现Serialization接口。

作用:一些类信息需要存在磁盘中、需要在网络传输

40、是否可以从一个static方法内部发生对非static方法调用。

不能,因为static方法在类的加载时就初始化了就已经分配到方法区,    非static方法加类加载完成后由对象的引用调用。

48、是否可以在static环境中访问非static变量?

答案是不可以,因为static变量是属于类的,在类加载的时候就被初始化了,这时候非静态变量并没有加载,故非静态变量不能访问。

41、写clone方法,通常都有一行代码。

public class cat implements Cloneable{     private int age;     private String name: } 写一个启动类 psvm{    Cat p = new cat(23, "zhang");    cat p1 = (Cat) p.clone();     sout(p)     sout(p2) } 输出: 不同地址值

42、Java中如何跳出多重嵌套循环

回答:break

48、break、return、continue

用于循环的有:直接跳出循环break,结束一次继续执行continue

用于方法:return

43、说出常用类、包、接口,各举5个。

类:object、String、Long、Integer、Thread

接口:Serialization、List、Set、Map、Collection

包:Java.long、java.util、java.sql、javax.jnlp、java.io

44、Java中实现线程的方法,用关键字修饰同步方法。

继承Thread、实现runnable接口、实现callable接口。synchronized

---------------题外话

修饰代码锁对象是任意对象(任意)

修饰静态方法 锁对象是类的class

修饰普通方法:锁对象是:this

45、同步和异步区别。

同步:发起者需要等待接收者返回过来的信息,成功之后在发起

异步:发起者不等待接受这返回过来的信息,随时发下一个请求

区别:一个等待一个不等待

例如:打电话相当于(同步)

广播相当于(异步)

同步:发送一个请求,等待返回,然后再发送下一个请求  异步:发送一个请求,不等待返回,随时可以再发送下一个请求  同步可以避免出现死锁,读脏数据的发生,一般共享某一资源的时候用,如果每个人都有修改权限,同时修改一个文件,有可能使一个人读取另一个人已经删除的内容,就会出错,同步就会按顺序来修改。 异步则是可以提高效率了,现在cpu都是双核,四核, 异步处理 的话可以同时做多项工作,当然必须保证是可以并发处理的。 这些都是对的。 同步和异步最大的区别就在于。一个需要等待,一个不需要等待。 比如广播,就是一个异步例子。发起者不关心接收者的状态。不需要等待接收者的返回信息 电话,就是一个同步例子。发起者需要等待接收者,接通电话后,通信才开始。需要等待接收者的返回信息

46、线程同步的方法。

同步代码快

同步方法

3.特殊域变量,volatile

4.使用重入锁ReentrantLock 

5.使用局部变量ThreadLocal实现.

www.cnblogs.com/edda/p/1260…

47、字符串常用方法,字符串转化为整型数方法,整型数转化为字符串方法。

字符串分割split、替换、大小、indexof、length()、concat()连接两个或多个字符串、toString、blog.csdn.net/leileibroth…

1)将字符串转化为整型

int i = Integer.parseIn(String str);

int i = Integer.valueOf().intValue();

注:Integer.parseIn 和 Integer.valueOf 不同,前者生成的是整型,而后者是一个对象,所以要通过intValue()来获得对象的值;

字串转成 Double, Float, Long 的方法大同小异.

2) 整型转化为字符串

String str = String.valueOf(int i);

String str = Integer.toString(int i);

String str = “” + i ;

注: Double, Float, Long 的方法大同小异.

二、Java高级

1、简述面向对象的理解,并举例说出你的理解。

2、写出单例模式。

3、写出一种11位手机号的正则表达式

4、实现字符串多个空格转换一个空格

5、字符串常用方法,substring(),split()。

6、start()和run()区别。

7、写出知道的设计模式。

8、Webservice介绍。(这个我自己没用过,渣渣了)

9、说出Servlet生命周期,Servlet和CGI区别。

10、sleep和wait的区别。

11、什么是反射,如何实现。

12、检查字符串回文,实现英文中单词个数和单词次数统计(部分公司要求较高,需要手动编程,百度查找一些面试常用编程题即可)。

13、tcp/ip协议三次握手。

14、http协议几种请求方式,区别。

get put post delete

15、Ajax请求是否可以实现同步。

16、隐藏URL方式。

17、描述取到一个网页内容的实现步骤,不需要具体实现过程(就是爬虫:取到网页的URL,然后从URL中国获取网页内容),考察逻辑思维能力。

18、简述form表单提交post方法与get方法在字符编码、http协议方面的区别。

19、一个http请求从开始到结束都经历了哪些过程,简写流程图。

三、框架(只介绍自己熟悉)

1 、Spring中的事务管理,支持哪几种方式,以及每种方式具体方法。

2 、Spring常用注解。

3 、Hibernate的缓存级别。

4 、hibernate是什么,工作原理。

5 、hibernate如何实现延迟加载。

6 、hibernate如何怎样类之间的关系。

7 、struts1是什么,工作流程。

8 、struts2工作流程。

9 、spring是什么。

10 、介绍IOC和AOP。

11 、springmvc工作原理。

12 、Mybatis工作流程。

13 、Mybatis与Hibernate区别。

14 、Mybatis框架传递参数方式。

15 、简述Spring事务管理,使用什么设计模式实现。

四、数据库

1 、数据库里面的索引和约束是什么。

2 、用SQL语句实现oracle分页查询。

3 、学生成绩表的常用查询(百度即可查到,常用的查询语法)

4 、数据库性能优化常用基础知识,百万级数据优化(百度搜搜即可)。

5 、left join ,right join用法。

6 、了解redis,memcache,mongodb等,最好有项目使用经验。

7 、如何防止SQL注入。

8 、一个微博评论功能的数据库设计,部门表和员工表的设计,权限管理系统的数据库设计(数据库设计这个是一个重点,面试了几家公司都问到了,而且是重点)。

9 、简述悲观锁和乐观锁。

五、linux基础

1 、修改系统时间命令、修改权限命令、

date -s +时间 修改系统时间

六、前端基础

1 、javascript中怎样选中一个checkbox,设置它无效的方式。

document.all.cb1[0].disabled = true;

2 、form表单 的input可以设置readonly和disable区别。

readonly和disabled都是可以禁止用户更改表单中的内容。

1.     readonly只针对input(text/password)和textarea有效,而disabled对于所有的表单元素都有效,包括select,radio,checkbox等

2.     表单在使用GET或POST方式提交时,表单元素在使用了readonly后,值可以传递到后台;而表单元素在使用disabled后值不可以传递到后台

3 、javascript变量范围有什么不同,全局变量和局部变量。

全局变量:当前页面内有效

局部变量:方法内有效

4 、列举3种数据类型。

主要数据类型:string, boolean, number

复合数据类型:function, object

5 、javascript常用对象

Windows对象、Boolean对象、Number对象、Array对象、String对象、Date对象、RegExp对象

6 、javascript中常用的取值赋值方法,对于单选按钮,复选框等的取值赋值等方法。(百度即可,javascript常用基础)

7 、jquery取值赋值基本方法。

blog.csdn.net/ll641058431…

8 、获取单选按钮的值,获取复选框的值,获取下拉列表的值,后去复选框的值,获取单选按钮组的值,文本框、文本域赋值。

9 、jquery的append与appendTo区别。

append(content)方法

方法作用:向每个匹配的元素内部追加内容。

 appendTo(expr)方法

方法作用:把所有匹配的元素追加到指定的元素元素集合中。

10 、CSS盒子模型的4个顺序。

盒子模型由元素内容(content)、内边距(padding)、边框(border)和外边距(margin)几个要素组成。