java初级面试题(62道)

二.java技术方面的常见问题?

1.String是基本数据类型么?

答:不是基本数据类型,基本数据类型有8种,byte,int,char,long,float,double,boolean和short。

引用数据类型包括:类,数组,借口等(简单来说就是除了基本数据类型之外的所有类型),所有呢String是引用类型。

2.int 和 Integer 有什么区别?

答:int 是基本数据类型

Integer是其包装类,注意是一个类。

为什么要提供包装类呢???

一是为了在各种类型间转化,通过各种方法的调用。否则 你无法直接通过变量转化。

比如,现在int要转为String

int a=0;

String result=Integer.toString(a);

在java中包装类,比较多的用途是用在于各种数据类型的转化中。

我写几个demo

//通过包装类来实现转化的

int num=Integer.valueOf("12");

int num2=Integer.parseInt("12");

double num3=Double.valueOf("12.2");

double num4=Double.parseDouble("12.2");

//其他的类似。通过基本数据类型的包装来的valueOf和parseXX来实现String转为XX

String a=String.valueOf("1234");//这里括号中几乎可以是任何类型

String b=String.valueOf(true);

String c=new Integer(12).toString();//通过包装类的toString()也可以

String d=new Double(2.3).toString();

再举例下。比如我现在要用泛型

List<Integer> nums;

这里<>需要类。如果你用int。它会报错的

3.JAVA中几种集合(List、Set和Map)的区别?

答:

list和set是继承collection接口

list里面包含arraylist和linkedlist,

这里给你举个linkedlist的例子吧:

LinkedList array = new LinkedList();

Integer i = -1;

array.add("The");

array.add("woods");

array.add("Lovely");

array.add("deep");

array.addFirst(i);

如果你指的第一个和第三个分别是-1和woods的话就是这样的

array.remove(1-1);

array.remove(3-1);

如果是the和lovely的话就是这样的

array.remove(1);

array.remove(3);

map里面包含hashmap和treemap,hashtable.

set里包含hashset和linkhashset。

List特点:元素有放入顺序,元素可重复 。

arraylist添加删除费劲linkedlist查询费劲

set特点:元素无放入顺序,元素不可重复,eg:

Set set=new HashSet();

    set.add(new Date());      //向列表中添加数据

    set.add("apple");        //向列表中添加数据

map特点:键值对,键不能重复

4.list和arraylist区别?

答:arraylist是一个类实现了list接口里边定义的方法,Arraylist采用的是数组形式来保存对象的,这种方式将对象在连续的位置中,所以最大的缺点就是插入删除时非常麻烦,

linklist采采用的是将对戏那个存放在独立的空间中,而且在每一个空间中还保存下一个连接的索引,但是缺点就是查找起来非常的麻烦,要从第一个索引开始查询。

5.HashMap和Hashtable的区别?

答:都属于map接口的类,键值对的方式存储数据,

Hashmap让存null,

Hashtable不让存放null.

hashtable.put(1,"女神");

6.hashmap中添加和提取数据,删除数据?

答:添加:put(),

获取:get(索引,值),

删除:remove(索引);

7.list中常用的方法?

答:

循环遍历的三种:

(1)List<Integer> list=new ArrayList<Integer>();  while(it.hasNext()) 

    { 

        System.out.println(it.next()); 

      } 

(2).for(int i=0;i<list.size();i++) 

      { 

        System.out.println(list.get(i)); 

      }

(3).for(Object o:list) 

    { 

        System.out.println(o); 

      } 

8.&和&&,||,|的区别?

答:&&并且的意思判断第一个是true在判断第二个,&两边都要判断。eg:

.当使用&&(短路与)时,则相反,当前面的表达式结果为假时则不会再执行后面的表达式,直接得出FALSE的结果,代码如下

当使用|时,若前面的表达式为真时,程序会继续执行后面的表达式,然后在得出TRUE的结果,代码如下:

当使用||(短路或)时,若前面的表达式结果为真,则程序不会再执行后面的表达式,直接得出TRUE的结果,代码如下:

9.public,friendly,protected,private的区别?

答:

public权限最大

protect不同包的其他类不可用

friendly子类不能调用(什么都不写的时候)

private只能本类调用

10.方法重载和重写的区别?

答:这是两个东西,

重载在一个类里面方法名相同,参数不同的两个方法

重写是在不同类里面的而且必须是集成关系,返回值类型和参数必须相同

11.接口和抽象类的区别是什么?

答:当你父类方法不确定的时候,那个就推出了抽象方法,

抽象类是继承,接口是被实现的。

java中一个类不能直接继承两个类比如说这样: class A extends B,C 不能这样写,因为java不支持多继承,一个子类只能有一个父亲,子类会继承父类的所有属性和方法,除了构造方法和私有的属性和方法。 但是你可以像下面这样实现继承多个类 class A extends B class C extends A 这样C就同时继承了B和A两个类

这个时候就引入接口,接口是多继承的

12.堆和栈的区别?

答:java中为了提高效率,就对数据进行了不同空间的分配,一下五个区域

(1)栈存储局部变量,局部变量有那些:在方法定义中或者在方法声明上定义的变量都称为局部变量

(2)堆存储new出来的东西,

(3)方法区

(4)本地方法区(和系统相关)

(5)寄存器(cpu使用)

13.hashcode是干什么用的?

答:hashcode 生成一个对象的码,equals可以比较两个对象内容相等,hashcode可以判断两个对象是否是一个对象,

所以判断两个对象是否相等必须同时判断equals和hashcode相等。

(1)对象相等则hashcode一定相等

(2)hashcode相等对象未必一定相等。

14.equals方法跟==有什么区别?

答:表示地址和值

15.静态变量和实例变量的区别?

答:static

类的静态变量在内存中只有一个,而实例变量取决于类的实例。

每创建一个实例,就会生成一个实例变量,而且生命周期也不同。

16.final,finally,finalize,friend的区别?

答:friend表示在碧昂辆中没有任何修饰符

final是一个关键字,定义完变量就不能改变了,

finally是处理 异常用到的,

finalize是一个垃圾回收器准备释放内存方法。

17.String能否被继承?

答:不能被继承,因为它是final,常量

18.Final类有什么特点?

答: 

属性常量

方法不可以overridding

类不可以继承

19.Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其

它类,是否可以implements(实现)interface(接口)?

答:不能被继承,一个内部类可以做为接口,由另一个内部类实现。

eg:接口内部类:我没有实现这个接口,但是我想用调用它里面的方法,又称只为回调,这个方法只会被使用一次的时候,

重写了接口里的抽象方法,然后这接口就能new了

20.什么时候用assert?

答:assert表示断言,assert 接boolean表达式。boolean是true程序

继续执行,是false抛出一个异常并输出后面的语句

21.GC是什么? 为什么要有GC? (基础)

答:不用担心内存管理,垃圾回收器会自动进行管理,要请求垃圾回

就调用下面的方法

system.gc();

Runtime.getRuntime().gc();

22.Collection 和 Collections的区别?

答:

Collections是个java.util下的类,它包含有各种有关集合操作的静

态方法。

Collection是个java.util下的接口,它是各种集合结构的父接口。

(collections.sort(集合或者数组)排序)

23.数组有没有length()这个方法? String有没有length()这个方法?

答:数组有length属性,String有length方法。

24.Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?

答:Set里的元素是不能重复的,那么用迭代器iterator()方法来区分。

25.常见的异常有那些?

答:一般Exception结尾

算术异常类:ArithmeticExecption

空指针异常类:NullPointerException

类型强制转换异常:ClassCastException

。数组负下标异常:NegativeArrayException

数组下标越界异常:ArrayIndexOutOfBoundsException

违背安全原则异常:SecturityException

文件已结束异常:EOFException

文件未找到异常:FileNotFoundException

字符串转换为数字异常:NumberFormatException

操作数据库异常:SQLException

输入输出异常:IOException

方法未找到异常:NoSuchMethodException

26.异常和错误的区别?

答:

Error表示系统级的错误和程序不必处理的异常,

Exception表示需要捕捉或者需要程序进行处理的异常。         

27.常见的错误error有那些?

答: 内存资源不足,系统崩溃, 方法调用栈溢出

一般以Error结尾把。

28.“static”关键字是什么意思?java中是否可以覆盖(override)一个private或者是static的方法?

答:static是静态的意思,一旦将什么东西类方法属性也好,设为了static就不会同那个类或者对象实类联系到一起,不创建这个类的对象也能调用这个方法,如果在这个东西statci前面加上private,就会给他加上一个范围,比如在这个类里面的函数定义了一个private那么别的类就不能调用了,static方法是可以被覆盖的。

29.构造器Constructor是否可被override?

构造器Constructor不能被继承,因此不能重写Overriding,但可以被

重载Overloading。

30值传递和引用传递的区别?

答:java中数据类型分俩大类,基本类型和对象类型,相对应的变量也有两种类型,基本类型和引用类型,基恩类型的变量保存原始值,即它代表的值是数值本身;

而引用类型的变量保存引用值,“引用值”指向内存空间的地址,代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所在的地址的位置。

基本类型包括:byte,short,int,long,char,float,double,boolean,returnAddress,

引用类型包括:类类型,接口类型和数组。

引用传递值会发生变化的,值传递不会发生变化的

31.当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?

答:对象当参数在方法中传递时候,值发生了变化是值传递,java语言中传递参数只有值传。

32.super()与this()的区别?

答:this调用本类的对象,super()调用父类的对象。

33.在JAVA中,如何跳出当前的多重嵌套循环?

答:用break; return 方法。

34.笔试题中常遇到的基本数据类型的问题?

答:一些问题是越界,转换异常等:

当然如果还是不够那么还有一个类叫BigDecimal

不同进制:2,8,16进制的不同写法

long a=123(这里的123是int类型) long a=123L(这里的123就是long类型)

long a=10000000000000//就会报错因为超出了int类型范围了。

35.排序都有哪几种方法?请列举。用JAVA实现一个快速排序?

答:冒泡排序:

  for(int i=0;i<n-1;i++)

        {

            for(int j=i;j<n-1;j++)

            {

选择排序:就是我们学的擂台排序法。

插入排序:插入排序的原理是对数组中的第i个元素,认为它前面的

i-1个已经排序好,然后将它插入到前面的i-1个元素中。插入排序对

少量元素的排序较为有效.

int []a ={1,2,3,4,5,6};

int []b=new int[7];

c=7(插入的数字) ,d=2(插入的位置)

for(int i=0;i<b.length;i++){

if(i<2){

b[i]=a[i]

}else if(i==2){

b[2]=7

}else{

b[i]=a[i-1];

}

}

36.String对象的常见方法?

答:

length()字符串的长度,

charAt():截取一个字符,eg:h=“abc”,h.charAt(1)='b'

getchars()截取多个字符

getBytes()eg:.getBytes("UTF-8");

equals和equalsIgnoreCase()比较两个字符串

startsWith()和stratswith()方法决定是否以特定

indexof(),lastIndexof()

substring()

concat()连接两个字符串

replace()替换

trim()去掉空格

valueOf()转化为字符串

tolowerCase(),toupperCase转化成大,小写

StringBuffer,append()可以把字符串连接在StringBuffer后面

split()把字符串分割成字符串数组

delete()和deleteCharAt删除字符串

reverse()点到StringBuffer对象中的字符

insert()插入字符串

37.如何让一个方法延迟5秒才执行

答:线程中有sleep(),也有timer对象。

38.如何将1个G的数据最快速度存放进C盘中?

答:(1)public class Test01 {

   

    public static void main(String[] args) throws Exception{

        getInputStream("C:\\setup.log","D:\\a.txt");

    }

    private static void getInputStream(String pathName,String copyName)throws Exception{

        File file = new File(pathName);

        if(!file.exists())

            throw new RuntimeException("文件不存在呀,你Copy个屁!");

        else{

            getCopy(copyName,new BufferedInputStream(new FileInputStream(file)));

        }

    }

    private static void getCopy(String copyName,BufferedInputStream bis)throws Exception{

        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(copyName));

        BufferedInputStream biss = bis;

        byte[] b = new byte[biss.available()];

        int len = 0;

        while((len = biss.read(b))!=-1){

            bos.write(b, 0, len);

        }

        bos.close();

        biss.close();

        System.out.println(copyName+"复制成功!");

    }

39.mvc是什么?

答:

m-model模型层就相当于数据访问层和业务逻辑层,

v-view视图层就相当于jsp,

c-control-控制层 小型的项目就用jsp+servlet,企业级的框架就是ssh.

40.javase,javaee,javame都是表示什么意思?

答:javase是开发桌面程序的,javaee是开发网站的,

javame是为机顶盒,移动电话编写的。

41.java中clone()方法是干什么用的

答:复制的意思

eg:person p=new person(23,"zhang");

    person p1=(pserson)p.clone();

这个就是真真正正克隆了一个对象;

42.讲一讲单例模式?

答:什么是单利模式官方给出的说话就是两句话:

确保一个类只有一个实列(也就是类的对象),并且提供一个访问点,外面可以通过这个访问点来访问这个类,

类似于servlet,springmvc控制器对象都是单例模式,注意了strust2是多例模式,每次请求产生一个action的对象。

43.什么是简单工程模式?

答:专门定义一个类来负责创建其他的实例,被创建的实例通常都具有共同的父类,它又被称为静态工厂模式。

44.php和.net和java的区别是什么?

答:从本质上说没什么什么区别,他们都是开发语言,

他们的主要区别就是受用群体不同,

.net:付费开发网站一般中小型企业和界面的开发比较多。

java,开源的,更实用与中大行企业,因为它发展比较长所有它对一些项目中遇到的问题有很多解决方案。

php开源的,用于一些小型项目,因为它效率比较高。

45.泛型是什么意思?

答:不管是类还是方法,表示他是用的类型其中那种,如果省略<>表示都可以用。

46.orm框架是什么?

答:ORM有映射关系的一种框架,对象会对应一个xml文件的映射,而且对象的方法可以放在映射里面存放。 

47什么是token,怎么用?

答:token是服务器端生成的一个字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成了一个token便将此返回给客户端,以后客户端只需要带上这个token前来请求数据即可,无需再次带上用户名和密码。

token的目的是为了验证用户登录情况以及减轻服务器的压力,减少频繁的查询数据库。

怎么用:

(1).服务器会生成一个uuid,服务器会把这个uuid直接存到数据库里面,然后在将这个token值返回给客户端

(2)客户端拿到token值之后,使用sp进行保存。

(3)以后客户端在发送网络请求(一般不是登录请求)的时候,就会将这个token值附带到参数中发送给服务器。

(4)服务器接受到客户端请求后,会取出token值与保存在本地(数据库)中的token值做对比

eg:

    48.java的核心优势是什么?

答:电脑和电脑之间通过互联网连在了一起,但是没个电脑的系统都不一样,这个时候我们需要一个语言可以在任何的系统上面跑,就出了java语言跨平台么,而且java发展悠久所以java遇到的问题比较完善。

49.jdk,jre,jvm是什么,什么关系,用来干什么怎么用?

答:jdk是java开发工具包,jre是java运行时环境,jvm是java虚拟机,jdk包含jre,jre包含jvm,

java虚拟机是用来执行java自解码文件,jre可以帮助我们加载一些外部的环境

50.什么是微服务?

答:就是把一个大项目放到不同的服务器上开发,把功能拆开放到不同的服务器上降低他们之间的耦合性。

51.cs和bs的区别?

答:cs是客户和服务器模式,比如说qq

bs是服务器和浏览器,比如说p2p

52.什么是分布式开发?

答:将一个项目分布到不同的服务器上 ,通过网络来共同完成,也包括数据库也分布在不同的计算机上,来完成一个任务。

53.javaweb项目中权限管理怎么设计的?

答:普遍设计三个表,一个用户表(user),角色表(role),资源表

(Resource)

54.分布式和集群的区别?

答:分布式是以缩短单个任务执行时间来提高效率,而集群则是通过提高单位时间内的任务来提高效率。例如:

如果一个任务由10个子任务组成, 每个子任务单独执行时间是一个小时,则一台服务器上执行任务需要10小时(这个模式是典型的分布式开发模式)

而采用集群方案,同样提供10台服务器,每个服务器都能单独处理这个任务,假设有10个任务同时达到,10服务器将同时达到这样整体来看就是1个小时内完成的任务。

55.web service和htttp有什么区别?

答:web service采用http协议传送数据,采用xml格式封装数据,web service是http封装的。

webservice=http+xml数据格式

56.什么是事物?

答:所有的操作,增删改查都算上,必须成功完成,否则在每个操作中所作的所有更改都会被撤销,一个操作要么全部成功要么一个也别做。

57.什么是terminal?

答:terminal是链接linux操作shell脚本的插件。

58.master-slave这个模式是什么意思?

答:主从的意思,一般来说用在数据集群比较多,主要是实现读写分离,对于数据库而言,基本上都是读大于写的,而slave可以有好多台,slave与master之间存在心跳数据包,当master有数据写入时候master会将数据同步到各slave上,如果数据库采用master-slave的话,我们的代码不需要进行修改,eg:对于mysql要实现master-slave需要借助第三方代理工具

59.解释一下线程和进程?

答:一个程序员需要最少需要一个进程,而一个进程最少需要一个线程,所以线程是程序执行的最小单位。

60.计算机的发展历史?

答:更加容易被人使用,功能更加强大。

机器语言(0,1二进制代码)冯诺依曼体系结构=>汇编语言(用单词来描述0,1,0,1指令)=>高级语言(c(贝尔实验室),java(核心优势是跨平台(我电脑是windows,服务器可以是linuxe,),去除了c++一些难以理解的特性,),c#(不能跨平台,window不是主流,linuxe是主流的))

61.jdk,jre,jvm是什么?

答:

jdk是java开发工具包,jre是java运行时环境,jvm是java虚拟机

jdk里面包含jre,jre里面包含jvm的关系

jdk就是一个软件,包括了java运行环境,java工具和java的基础类库。

虚拟机就是用来解析java代码用的。

62.java为什么能跨平台呢?

答:,我希望写的程序可以在Linux上面跑,可以在windows里面跑,可以在苹果系统里面跑,jdk里面有不同的虚拟机有linux,有windows的,有苹果的虚拟机,它写了三个版本,首先sun公司定义一个虚拟机的规范,他们就可以用不同语言来写一个虚拟机的规范,扩展一下:

虚拟机就是一种规范,你可以用软件来实现,也可以用硬件来实现,有了虚拟机就能解析java文件执行程序。

我在记事本里写的一个.java文件,然后编译称.class文件,在用jvm解析就是一个程序啦,这个.class就是你写public static class

而且一个java文件可以生成很多class文件:

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,013评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,205评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,370评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,168评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,153评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,954评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,271评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,916评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,382评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,877评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,989评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,624评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,209评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,199评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,418评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,401评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,700评论 2 345

推荐阅读更多精彩内容