当前位置:首页 > Java知识 > 正文内容

java 基础 面试题(java基础面试题大全)

abcsky887个月前 (10-28)Java知识97

本篇文章给大家谈谈

1、何为编程?编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程为了使计算机能够理解人的意图,人类就必须要将需解决的问题的思路、方法、和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。

java 基础 面试题(java基础面试题大全)

这种人和计算机之间交流的过程就是编程2、什么是Java?Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。

Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方网络引流推广方法式进行复杂的编程 3、JVM、JRE和JDK的关系

JVMJava Virtual Machine是Java虚拟机,Java程序需要运行在虚拟机上,不同的平台有自己的虚拟机,因此Java语言可以实现跨平台JREJava Runtime Environment包括Java虚拟机和Java程序所需的核心类库等。

核心类库主要是java.lang包:包含了运行Java程序必不可少的系统类,如基本数据类型、基本数学函数、字符串处理、线程、异常处理类等,系统缺省加载这个包如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。

JDKJava Development Kit是提供给Java开发人员网络引流推广方法使用的,其中包含了Java的开发工具,也包括了JRE所以安装了JDK,就无需再单独安装JRE了其中的开发工具:编译工具(javac.exe),打包工具(jar.exe)等。

4、Java语言有哪些特点?简单易学(Java语言的语法与C语言和C++语言很接近)面向对象(封装,继承,多态)平台无关性(Java虚拟机实现平台无关性)支持网络编程并且很方便(Java语言诞生本身就是为简化网络编程设计的)

支持多线程(多线程机制使应用程序在同一时间并行执行多项任)健壮性(Java语言的强类型机制、异常处理、垃圾的自动收集等)安全性5、Java 8的接口新增了哪些特性?lambada表达式函数式接口方法引用

网络引流推广方法认方法Stream APIOptionalDate Time API(如LocalDate)重复注解Base64JVM的新特性(如元空间Metaspace代替持久代)6、ArrayList和LinkedList有什么区别?

可以从它们的底层数据结构、效率、开销进行阐述哈ArrayList是数组的数据结构,LinkedList是链表的数据结构随机访问的时候,ArrayList的效率比较高,因为LinkedList要移动指针,而ArrayList是基于索引(index)的数据结构,可以直接映射到。

插入、删除数据时,LinkedList的效率比较高,因为ArrayList要移动数据LinkedList网络引流推广方法比ArrayList开销更大,因为LinkedList的节点除了存储数据,还需要存储引用7、重写和重载的区别。

作用范围:重写的作用范围是父类和子类之间;重载是发生在一个类里面参数列表:重载必须不同;重写不能修改返回类型:重载可修改;重写方法返回相同类型或子类抛出异常:重载可修改;重写可减少或删除,一定不能抛出新的或者更广的异常

访问权限:重载可修改;重写一定不能做更严格的限制8、抽象类和接口有什么区别?抽象类要被子类继承,接口要被子类实现抽象类可以有构造方法,接口中不能有构造方法抽象类中可以有普通成员变量,接口中没有普通成员变量,它的变量只能是公共的静态的常量。

一个类可以实现多个接口,但是只能继网络引流推广方法承一个父类,这个父类可以是抽象类接口只能做方法声明,抽象类中可以作方法声明,也可以做方法实现抽象级别(从高到低):接口>抽象类>实现类抽象类主要是用来抽象类别,接口主要是用来抽象方法功能。

抽象类的关键字是abstract,接口的关键字是interface9、静态代理和动态代理的区别?静态代理中代理类在编译期就已经确定,而动态代理则是JVM运行时动态生成,静态代理的效 率相对动态代理来说相对高一些,但是静态代理代码冗余大,一单需要修改接口,代理类和委 托类都需要修改。

10、JDK动态代理和CGLIB动态代理的区别JDK动态代理只能对实现了接口的类生成代理,而不能针对类CGLIB是针对类实现代理,网络引流推广方法主要是对指定的类生成一个子类,覆盖其中的方法因为是继承, 所以该类或方法最好不要声明成final。

11、&和&&的区别按位与, a&b 表示把a和b都转换成二进制数,再进行与的运算;&和&&都是逻辑运算符号,&&又叫短路运算符逻辑与,a&& b ,a&b 都表示当且仅当两个操作数均为 true时,其结果才为 true,否则为false。

逻辑与跟短路与的差别是非常巨大的,虽然二者都要求运算符左右两端的布尔值都是true,整个表达式的值才是true但是,&&之所以称为短路运算,是因为如果&&左边的表达式的值是false,右边的表达式会被直接短路掉,不会进行运算。

12、Java中IO流分为几种?Ja网络引流推广方法va中的流分为两种:一种是字节流,另一种是字符流IO流分别由四个抽象类来表示(两输入两输出):InputStream,OutputStream,Reader,Writer。

13、final 在 java 中有什么作用?final 修饰的类叫最终类,该类不能被继承final 修饰的方法不能被重写final 修饰的变量叫常量,常量必须初始化,初始化之后值就不能被修改14、java 中的 Math.round(-1.5) 等于多少?。

等于 -115、String 属于基础的数据类型吗?String 不属于基础类型,基础类型有 8 种:byte、boolean、char、short、int、float网络引流推广方法、long、double,而 String 属于对象。

16、String str="i"与 String str=new String(“i”)一样吗?不一样,因为内存的分配方式不一样String str="i"的方式,java 虚拟机会将其分配到常量池中;而 String str=new String(“i”) 则会被分到堆内存中。

17、多线程有什么好处?多线程最大的好处就是:更好地利用CPU简单的程序设计程序更多的响应多任务下CPU资源分配公平性18、jmeter 测试性能主要关注啥?接口响应时间、错误率和Tps19、arraylist和linkedlist区别?

arraylist底层是 网络引流推广方法动态数据,查询快和插入数组最后面较快注意:数据插入非尾部,涉及到下标index移位linkedlist底层是链表,插入和查询头部元素较快注意:linkedlist如果查询头部元素还是比较快的。

20、java 中操作字符串都有哪些类?它们之间有什么区别?答:String、StringBuffer、StringBuilder可以操作拼接字符串区别:String是不可变的对象,对每次对String类型的改变时都会生成一个新的对象,StringBuffer和StringBuilder是可以改变对象的。

对于操作效率:StringBuilder > StringBuffer > String对于线程安全:网络引流推广方法StringBuffer 是线程安全,可用于多线程;StringBuilder 是非线程安全,用于单线程

21、== 和 equals 的区别是什么?答:==是操作符,是比较两个对象的地址或基本类型,equals是比较两个对象的内容,属于Object里的方法22、两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?。

答:不对!hashCode()相同,不代表两个对象就相同hashCode值是从hash表中得来的,hash是一个函数,该函数的实现是一种算法,通过hash算法算出hash值,hash表就是hash值组成的,一共有8个位置。

1)、如果两个对象equals网络引流推广方法,Java运行时环境会认为他们的hashcode一定相等2)、如果两个对象不equals,他们的hashcode有可能相等3)、如果两个对象hashcode相等,他们不一定equals。

4)、如果两个对象hashcode不相等,他们一定不equals23、int和Integer有什么区别,为什么要使用包装类?答:为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型都引入了对应的包装类型,比如int的包装类就是Integer,Java 为每个原始类型提供了包装类型:。

- 原始类型: boolean,char,byte,short,int,long,float,double- 包装网络引流推广方法类型:Boolean,Character,Byte,Short,Integer,Long,Float,Double

24、抽象类(abstract class)和接口(interface)有什么区别?1)、抽象类和接口都不能够实例化、不能有构造方法2)、接口用interface来修饰3)、类能实现一个或多个接口,但只能继承一个抽象类

4)、接口里的方法只能是抽象方法、类方法或者默认方法,接口里的方法不能有方法实现,但类方法、默认方法都必须要实现5)、用抽象类是为了重用减少编码量,降低耦合性25、面向对象的三个特征是什么?什么是 封装、继承、多态?。

答:面向对象的三个基本特征:封装、继承、多态1)、网络引流推广方法封装(英语:Encapsulation)是指,一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。

2)、继承可以使得子类具有父类的属性和方法或者重新定义、追加属性和方法等,继承可以理解为一个对象从另一个对象获取属性的过程3)、多态是同一个行为具有多个不同表现形式或形态的能力多态性是对象多种表现形式的体现。

比如我们说"宠物"这个对象,它就有很多不同的表达或实现,比如有小猫、小狗、蜥蜴等等那么我到宠物店说"请给我一只宠物",服务员给我小猫、小狗或者蜥蜴都可以,我们就说"宠物"这个对象就具备多态性26、列出一些你常见的运网络引流推广方法行时异常?

答:- ClassNotFoundException(类找不到异常)- ClassCastException (类转换异常)- IllegalArgumentException (非法参数异常)- IndexOutOfBoundsException (下标越界异常)

- NullPointerException (空指针异常)- SecurityException (安全异常)27、常用数据结构答:集合,线性结构(数组,队列,链表和栈),树形结构,图状结构28、Comparator 与Comparable 有什么不同?。

答:Comparable 接口用于定义对象的自然顺序,是排序接口,网络引流推广方法而 comparator 通常用于定义用户定制的顺序,是比较接口29、Java 中堆和栈有什么区别?答:JVM 中堆和栈属于不同的内存区域,使用目的也不同。

栈常用于保存方法帧和局部变量,而对象总是在堆上分配栈通常都比堆小,也不会在多个线程之间共享,而堆被整个 JVM 的所有线程共享30、JVM分为哪些区,每一个区是干嘛的?1)、方法区(method):被所有的线程共享。

方法区包含所有的类信息和静态变量2)、堆(heap):被所有的线程共享,存放对象实例以及数组,Java堆是GC的主要区域3)、栈(stack):每个线程包含一个栈区,栈中保存一些局部变量等4)、程序计数器:是当前线程执行的字节码网络引流推广方法的行指示器。

31、解释堆空间和GC是什么?答:Java 进程的时候,会为它分配内存内存的一部分用于创建堆空间,当程序中创建对象的时候,就从对空间中分配内存GC 是 JVM 内部的一个进程,回收无效对象的内存用于将来的分配。

32、同步和异步有何异同,在什么情况下分别使用他们?举例说明如果数据将在线程间共享例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。

当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率33、sleep(网络引流推广方法)和 wait()的区别?sleep 是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。

调用 sleep 不会释放对象锁wait 是 Object 类的方法,对此对象调用 wait 方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出 notify 方法(或 notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。

34、Java 中实现多态的机制是什么?方法的重写 Overriding 和重载 Overloading 是 Java 多态性的不同表现重写 Overriding是父类与子类之网络引流推广方法间多态性的一种表现,重载 Overloading 是一个类中多态性的一种表现。

35、List、Map、Set 三个接口,存取元素时,各有什么特点?List 以特定次序来持有元素,可有重复元素Set 无法拥有重复元素,内部排序Map 保存 key-value 值,value 可多值。

36、Java的”一次编写,处处运行”是如何实现的?答:Java程序会被编译成字节码组成的class文件,这些字节码可以运行在任何平台,因此Java是平台独立的37、如果去掉了main方法的static修饰符会怎样?。

答:程序能正常编译运行时会抛NoSuchMethodError异常38、GC是什么?为什么要有GC?网络引流推广方法答:GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。

39、为什么Java里没有全局变量?答:全局变量是全局可见的,Java不支持全局可见的变量,因为:全局变量破坏了引用透明性原则全局变量导致了命名空间的冲突40、Java支持哪种参数传递类型?答:Java参数都是进行传值。

对于对象而言,传递的值是对象的引用,也就是说原始引用和参数引用的那个拷贝,都是指向同一个对象网络引流推广方法41、get 和 post请求的区别答:get:1、请求的参数会附加在URL之后,多个参数用 & 连接2、因为URL的长度限制,get 方式传输的数据大小有所限制。

3、安全性低,因为传输的数据会显示在请求的URL中post:1、将请求参数放置在 HTTP 数据包,发送给服务器2、传送的数据量比较大3、安全性较高42、是否可以从一个静态(static)方法内部发出对非静态(non-static)方法的调用?。

答:不可以,静态方法只能访问静态成员,因为非静态方法的调用要先创建对象,然后在调用静态方法时可能对象并没有被初始化43、程序中可以允许多个类同时拥有都有main方法吗?答:可以当程序运行的时网络引流推广方法候,我们会指定运行的类名。

JVM只会在你指定的类中查找main方法因此多个类拥有main方法并不存在命名冲突的问题44、什么是反射API?它是如何实现的?答:反射是指在运行时能查看一个类的状态及特征,并能进行动态管理的功能这些功能是通过一些内建类的反射API提供的,比如Class,Method,Field, Constructors等。

使用的例子:使用Java反射API的getName方法可以获取到类名45、为什么重载hashCode方法?答:一般的地方不需要重载hashCode,只有当类需要放在HashTable、HashMap、HashSet等等hash结构的集合时才会重载hashCode网络引流推广方法,那么为什么要重载hashCode呢?

如果你重写了equals,比如说是基于对象的内容实现的,而保留hashCode的实现不变,那么很可能某两个对象明明是“相等”,而hashCode却不一样这样,当你用其中的一个作为键保存到hashMap、hasoTable或hashSet中,再以“相等的”找另一个作为键值去查找他们的时候,则根本找不到。

46、Final在java中的作用答:Final可以修饰类,修饰方法,修饰变量修饰的类叫最终类该类不能被继承修饰的方法不能被重写修饰的变量叫常量,常量必须初始化,一旦初始化后,常量的值不能发生改变47、为什么需要hashCode?

答:1.通过hashCode可网络引流推广方法以很快的查到小内存块2.通过hashCode比较比equal方法快,当get时先比较hashCode,如果hashCode不同,直接返回false48、Super与this表示什么?。

答:Super表示当前类的父类对象This表示当前类的对象49、Cookie 和 Session 的区别答:Cookie:是把数据保存在浏览器本地,并随着每一次请求发送到服务器Session:是把用户数据保存在服务器端。

50、IO 和 NIO 的区别,NIO的优点答:1、IO是面向流的,NIO是面向缓冲区的2、IO是阻塞的,NIO是非阻塞的3、NIO有选择器机制,可以让一个线程来监视多个IO通道NIO的优点:1、网络引流推广方法不需要使用 read() 或者 write() 就可以处理文件内容。

2、NIO的处理效率很快51、谈谈对Java中多态的理解?答:多态是指允许不同子类型的对象对同一消息作出不同的响应多态包括编译时多态和运行时多态方法重载(overload)实现的是编译时的多态性(也称为前绑定),而方法重写(override)实现的是运行时的多态性(也称为后绑定)。

运行时多态是面向对象最精髓的东西,要实现运行时多态需要:方法重写:子类继承父类并重写父类中已有的或抽象的方法对象造型:将父类型的引用指向子类型的对象,这样父类的引用调用同样的方法时即会根据子类对象的不同而表现出不同的行为。

52、Integer内部缓存网络引流推广方法?答:Integer类内部有一个staitic 的Integer数组,存储的是一些已经完成初始化的Integer对象,一般值为(-128~127),若用==比较,则有时候会因为值不在缓存中而返回false,所以应该用equals比较。

53、什么是拆装箱?拆箱:把包装类型转成基本数据类型装箱:把基本数据类型转成包装类型54、接口有什么特点?接口中声明全是public static final修饰的常量接口中所有方法都是抽象方法接口是没有构造方法的

接口也不能直接实例化接口可以多继承举报/反馈

扫描二维码推送至手机访问。

版权声明:本文由海南拓宏网络科技工作室发布,如需转载请注明出处。

本文链接:http://4blc.com/post/616.html

分享给朋友:

“java 基础 面试题(java基础面试题大全)” 的相关文章

百度热搜(2021全国高考)

本篇文章给大家谈谈 这些面试题都是互联网大厂真实流出的面试内容,每个问题都附带完整详细的答案,不像网上的那些资料三教九流有的甚至还没答案,这些面试题我也是经过日积月累才整理出来的精品资料 面试题主要是针对1-5年左右的Java开发程序员提升的,不管是传统行业还是互联网行业,掌握这些...

达内java培训班怎么样(达内java教学视频)

本文分享给大家的是: Java程序员面试失败的5大原因?1 说得太少尤其是那些开放式的问题,如“请介绍下你自己”或“请讲一下你曾经解决过的复杂问题”面试官会通过你对这些技术和非技术问题的回答来评估你的激情他们也会通过模拟团队氛围和与你的交流互动来判断你的经验和能力。 所以,...

java和python差别大吗(python跟java区别)

本篇文章给大家谈谈   Java和Python可能是评估如何完成你即将到来的项目的明智起点根据你计划创建的产品,选择正确的语言取决于你的业务  由于不了解技术的优缺点,很难断定编程语言最适合你的业务目标这两种语言相互竞争,因为它们都为开发人员提供了极好的机会。   Java...

rust豆罐包伤害表(rust豆罐包要什么材料)

本篇文章给大家谈谈 作者丨 B. Cameron Gain译者丨千山用“Rust+Wasm”写前端真香,已经成为了圈内的大众话题,甚至在2018年,Rust重点发展目标之一就是建立针对便于开发WebAssembly的生态工具。 那么5年过去了,这门有望取代JavaScrip...

南通渡口封了吗(南通渡口几点开渡,晚上几点收渡)

今天给各位分享 参加IT培训学习,根本目的就是希望通过自身几个月的努力学习,掌握到可以赖以就业、赖以获得长远发展的技能,最终在学完之后找到一份比较理想的工作所以,正规的培训机构,自己想要积累口碑、发展壮大,就会努力去满足“客户”的这一根本需求,帮助参加培训的学生实现更理想的就业。...

东莞动漫培训机构哪家好(东莞学动漫)

今天给各位分享 原标题:东莞动漫设计培训机构费用贵吗?一般多少钱?东莞动漫设计培训机构费用贵吗?一般多少钱?对于新手来说,一定要付出时间来去提高自己的画技,不断的练习、不断的去画,同时也是需要提升自己审美能力,追寻自己的目标。 动漫被誉为21世纪具有发展潜力的朝阳产业之一,...