您当前的位置:首页 > 养生 > 内容

中高级java开发面试题(java基础面试题有哪些)

本文目录

  • java基础面试题有哪些
  • 最新的java面试题目
  • java开发面试题
  • Java高级软件工程师会面试哪些问题
  • java开发面试题哪里有
  • 重分悬赏JAVA面试问题
  • 面试官问java面试题有看过那些java书和技术,怎么回答

java基础面试题有哪些

下面是10道java基础面试题,后附答案

1.什么是 Java 虚拟机?为什么 Java 被称作是“平台无关的编程语言”?

Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程。Java 源文件被编译成能被 Java 虚拟机执行的字节码文件。

Java 被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java 虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。

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

“static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问。

Java 中 static 方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而 static 方法是编译时静态绑定的。static 方法跟类的任何实例都不相关,所以概念上不适用。

3.JDK 和 JRE 的区别是什么?

Java 运行时环境(JRE)是将要执行 Java 程序的 Java 虚拟机。它同时也包含了执行 applet 需要的浏览器插件。Java 开发工具包 (JDK)是完整的 Java 软件开发包,包含了 JRE,编译器和其他的工具(比如:JavaDoc,Java 调试器),可以让开发者开发、编译、执行 Java 应用程序。

4.是否可以在 static 环境中访问非 static 变量?

static 变量在 Java 中是属于类的,它在所有的实例中的值是一样的。当类被 Java 虚拟机载入的时候,会对 static 变量进行初始化。如果你的代码尝试不用实例来访问非 static 的变量,编译器会报错,因为这些变量还没有被创建出来,还没有跟任何实例关联上。

5.Java 支持的数据类型有哪些?什么是自动拆装箱?

Java 语言支持的 8 中基本数据类型是:

byte

short

int

long

float

double

boolean

char

自动装箱是 Java 编译器在基本数据类型和对应的对象包装类型之间做的一个转化。比如:把 int 转化成 Integer,double 转化成 double,等等。反之就是自动拆箱。

6.Java 支持多继承么?

不支持,Java 不支持多继承。每个类都只能继承一个类,但是可以实现多个接口。

7.Java 中,什么是构造函数?什么是构造函数重载?什么是复制构造函数?

当新对象被创建的时候,构造函数会被调用。每一个类都有构造函数。在程序员没有给类提供构造函数的情况下,Java 编译器会为这个类创建一个默认的构造函数。

Java 中构造函数重载和方法重载很相似。可以为一个类创建多个构造函数。每一个构造函数必须有它自己唯一的参数列表。

Java 不支持像 C++中那样的复制构造函数,这个不同点是因为如果你不自己写构造函数的情况下,Java 不会创建默认的复制构造函数。

8.Java 中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?

Java 中的方法重载发生在同一个类里面两个或者是多个方法的方法名相同但是参数不同的情况。与此相对,方法覆盖是说子类重新定义了父类的方法。方法覆盖必须有相同的方法名,参数列表和返回类型。覆盖者可能不会限制它所覆盖的方法的访问。

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

Java 提供和支持创建抽象类和接口。它们的实现有共同点,不同点在于:

接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。

类可以实现很多个接口,但是只能继承一个抽象类

类如果要实现一个接口,它必须要实现接口声明的所有方法。但是,类可以不实现抽象类声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的。

抽象类可以在不提供接口方法实现的情况下实现接口。

Java 接口中声明的变量默认都是 final 的。抽象类可以包含非 final 的变量。

Java 接口中的成员函数默认是 public 的。抽象类的成员函数可以是 private, protected 或者是 public。

接口是绝对抽象的,不可以被实例化。抽象类也不可以被实例化,但是,如果它包含 main 方法的话是可以被调用的。

10.什么是值传递和引用传递?

对象被值传递,意味着传递了对象的一个副本。因此,就算是改变了对象副本,也不会影响源对象的值。

对象被引用传递,意味着传递的并不是实际的对象,而是对象的引用。因此,外部对引用对象所做的改变会反映到所有的对象上。

最后祝你面试顺利!

最新的java面试题目

文思创新面试归来今天又面了一家:文思创新起初不是很想去的,因为网上给这公司的评论实在不怎么好. 但后来HR MM说这是个Baidu的项目,会去那边工作,乡下人进城想看看Baidu是怎么工作的,还是答应先试试,没准自己还不行呢. 先说下面试情况: 面试很是在我进行笔试的时候进行的,此时我笔试快做完了,但不好让人家两人等,先面试. 技术上主要是问了我项目经验,以及SSH框架,但看我项目中Struts用的少后,不停的用 ...精心收集的面试笔试题库,网络上 ...精心收集的面试笔试题库,网络上很难找到这么齐全的,推荐给大家 软件测试面试题集(部分收集) J2EE经典面试题集(附答案) 分享130道ASP.NET面试题和答案[推 [华为笔试题]华为C/C 笔试题(经 最全的C\C 面试题集三(C\C 试题 最全的C\C 面试题集二(C\C 试题 最全的C\C 面试题集一(C\C 试题 分球问题与解答(“智力题“) 猜数问题 ...面试拒绝做题目的技术“牛人”面试拒绝做题目的技术“牛人” 刚才来了一位面试者,面试我们公司的J2EE高级工程师。此人简历上职位软通动力某个支持部门的技术主管。这个家伙,是95年毕业,非IT专业,99年“自学”转入IT行业,从事Java开发(其牛人语)。简历上描述:深刻理解java设计模式和j2ee架构,追求并把握新技术,能够宏观决策架构设计和正确选择实现技术。拥有先进的设计理念,能根据需求,做出可扩展,可配置的框架!写的挺 ...大家都来说说自己最讨厌的面试题 ...我先说,楼下接力:简单介绍下你自己简历上都写着呢,作为面试官面试前难道都不看简历?那还要简历做什么?我不明白为什么那么多面试官都爱问这个问题,从我个人面试的经历来说问这个问题的,又在你回答这个问题的时候匆匆翻阅你的简历的人可以认为他之前就没看过你的简历,是对面试者的一种不尊重。凡是遇到这种情况除非各方面的条件真的好的超乎想象(一直没遇到过),否则我是直接pass掉的。我也给别人面试过,面试的前一 ...相关新闻面试开发人员的有效方法  当要雇佣开发者时,传统的面试方法显得力不从心,这是必须要面对的现实。你会读简历、电话面试、技术面试、文化适应面试、各方面测试,最后,你基本上跟着自己的感觉走,雇佣了你认为优秀的人,即使这样,也会经常看走眼。情况不太理想,这是因为开发者属于技术性工人,谈话反应不出他或她对所在领域有多精通。    为什么传统面试方法不行呢?  当你要求别人跟你一起面试时,你会给他们多少准备时 ...美国高级工程师谈Struts 走向自从2000年Apache Struts出现以来,它在大多数的标准下都运行良好,帮助开发出了许许多多基于Java的Web应用程序。Struts是利用服务器端生成的HTML和客户端验证的Javascript的完美结合,使开发和维护变得更加容易。随着时间的推移,用户对Web应用程序的要求不断增加,Struts 1.0几乎还滞留于原地,给Web开发者留下了越来越多无趣的”衔接”代码,如何才能建立一个完美的 ...Struts 2.2.1.1 发布Apache Struts 发布最新的 Struts 2.2.1.1 作为 General Availability 发布版本, GA 命名方式是我们最高的质量级别。Apache Struts 2 一种优雅,可扩展的框架,用于创建企业级应用程序。框架设计符合完整的开发周期,从构建,到部署,再到维护的全过程。本次发布包含 REST Plugin 中Dynamic Method Invocation的一 ...Apache Struts 2.2.3 发布Apache Struts 团队发布了最新的 Struts 2.2.3 GA(GA代表最高质量)。下载地址:Apache Struts 2.2 系列对规范的最低要求: Servlet API 2. ...相关博客2010年9月几道最新Java面试题---------九月更新 JAVA面试题带答案的java面试题 欢迎参考 Java的几个基础面试题 带答案的 如下代码中finally中的代码会不会执行? Java里面StringBuilder和St... JAVA和C++区别都有哪些? Struts中DispatchAction和... 如何在Web项目中保护JSP源代码不被未经授... Struts的控制器如 ...面试题和答案面试题和答案 IT技术类面试题.Net面试题及答案 java面试题和答案 C#面试题和答案 最全最新的CC++面试题集(CC++试题和部分答案) CC++面试题集(最全的CC++试题集和答案)(续) 百度面试笔试题-2007百度校园招聘笔试题 解答答案 金山笔试题(2007年10月) 腾讯c/c++笔试题 C语言面试题-华为C语言面试题 CC++面试题集(最全的CC++试题集和答案)(续) C++ ...Struts面试题专栏九月份更新Struts面试题专栏 Struts中DispatchAction和... Struts的控制器如何知道什么样的信息转发... 介绍一下Struts的Action类 介绍一下Struts的ActionServl... Struts中最核心的类和包有哪些? 如何配置spri ...MySql面试题九月份更新MySql面试题专栏 遇到的Mysql的面试题 腾讯公司的一个sql题 如何提高MySql的安全性? MySQL面试题 MYSQL基础面试题 一些关于MySql加速和优化的面试题 MYSQL面试题:十一个高级MySql 面试... ...

java开发面试题

结果如下,写的有些复杂了

private static List《Tray》 mergeTrays(List《Tray》 list) {        Map《Integer, List《Goods》》 trayMap = new HashMap《》();        List《Tray》 newTray = new ArrayList《》();        for (Tray tray : list) {            int id = tray.id;            List《Goods》 goods = tray.goods;            if (trayMap.containsKey(id)) {                // 将相同托盘id的商品放在一起                List《Goods》 tempGoods = trayMap.get(id);                for (int i = 0; i 《 goods.size(); i++) {                    tempGoods.add(goods.get(i));                }                trayMap.put(id, tempGoods);            }else{                trayMap.put(id, goods);            }        }        for (Map.Entry《Integer, List《Goods》》 entry : trayMap.entrySet()) {            int id = entry.getKey();            List《Goods》 goods = entry.getValue();            Map《Integer, Integer》 goodsMap = new HashMap《》();            for (int i = 0; i 《 goods.size(); i++) {                Goods good = goods.get(i);                if (goodsMap.containsKey(good.id)) {                    goodsMap.put(good.id, goodsMap.get(good.id) + good.count);                }else{                    goodsMap.put(good.id, good.count);                }            }            List《Goods》 newGoods = new ArrayList《》();            for (Map.Entry《Integer, Integer》 goodEntry : goodsMap.entrySet()) {                Goods good = new Goods();                good.id = goodEntry.getKey();                good.count = goodEntry.getValue();                newGoods.add(good);            }            Tray tray = new Tray();            tray.id = id;            tray.goods = newGoods;            newTray.add(tray);        }        return newTray;    }

Java高级软件工程师会面试哪些问题

如果要应聘高级开发工程师职务,仅仅懂得Java的基础知识是远远不够的,还必须懂得常用数据结构、算法、网 络、操作系统等知识。因此本文不会讲解具体的技术,笔者综合自己应聘各大公司的经历,整理了一份大公司对Java高级开发工程师职位的考核纲要,希望可以帮助到需要的人。1 Java基础1.1 Collection和Map(1)掌握Collection和Map的继承体系。(2)掌握ArrayList、LinkedList、Vector、Stack、PriorityQueue、HashSet、 LinkedHashSet、TreeSet、HashMap、LinkedHashMap、TreeMap、WeakHashMap、EnumMap、 TreeMap、HashTable的特点和实现原理。(3)掌握CopyOnWriteArrayList、CopyOnWriteArraySet、ConcurrentHashMap的实现原理和适用场景。1.2 IO(1)掌握InputStream、OutputStream、Reader、Writer的继承体系。(2)掌握字节流(FileInputStream、DataInputStream、BufferedInputStream、 FileOutputSteam、DataOutputStream、BufferedOutputStream)和字符流 (BufferedReader、InputStreamReader、FileReader、BufferedWriter、 OutputStreamWriter、PrintWriter、FileWriter),并熟练运用。(3)掌握NIO实现原理及使用方法。1.3 异常(1)掌握Throwable继承体系。(2)掌握异常工作原理。(3)了解常见受检异常(比如FileNotFoundException)、非受检异常(比如NullPointerException)和错误(比如IOError)。1.4 多线程(1)掌握Executors可以创建的三种(JAVA8增加了一种,共四种)线程池的特点及适用范围。(2)掌握多线程同步机制,并熟练运用。1.5 Socket(1)掌握Socket通信原理。(2)熟练使用多线程结合Socket进行编程。2 Java虚拟机2.1 JVM内存区域划分(1)掌握程序计数器、堆、虚拟机栈、本地方法栈、方法区(JAVA8已移除)、元空间(JAVA8新增)的作用及基本原理。(2)掌握堆的划分:新生代(Eden、Survivor1、Survivor2)和老年代的作用及工作原理。(3)掌握JVM内存参数设置及调优。2.2 类加载(1)掌握类的加载阶段:加载、链接(验证、准备、解析)、初始化、使用、卸载。(2)掌握类加载器分类及其应用:启动类加载器、扩展类加载器、应用程序类加载器、自定义加载器。3 J2EE(1) 掌握JSP内置对象、动作及相关特点和工作原理。(2) 掌握Servlet的特点和工作原理。(3) 掌握Spring框架的IOC和AOP实现原理(反射和动态代理)。(4) 至少掌握一个MVC框架(Spring MVC,Struts等)的工作原理,并熟练运用。(5) 至少掌握一个ORM框架(Hibernate,MyBatis等)的工作原理,并熟练运用。4 数据结构与算法(1)掌握线性表和树的特点并熟练运用。(2)掌握常用排序和查找算法:插入排序(直接插入排序、希尔排序)、选择排序(直接选择排序、堆排序)、交换排序(冒泡排序、快速排序)、归并排序,顺序查找、二分查找、哈希查找。(3) 熟练运用常见排序和查找算法思想解决编程问题。(4)了解几大基本算法:贪心算法、分治策略、动态规划。5 计算机网络(1)掌握网络的分层结构,及每层的功能特点。(2)掌握TCP/IP的通信原理(三次握手、四次挥手)6 数据库(1)掌握复杂的SQL语句编写。(2)掌握数据库的优化(SQL层面和表设计层面)。(3)至少掌握一款数据库产品。(4)熟悉高并发、大数据情况下的数据库开发。7 Web技术(1)掌握AJAX的工作原理。(2)至少熟悉一款JS框架(比如JQuery)。8 设计模式(1)熟悉常见的设计模式。(2)会将设计模式理论应用到实际开发中。9 Linux(1)熟练运用Linux常见命令。(2)熟悉Linux操作系统基本概念及特点。(3)熟悉Shell脚本。10 操作系统(1)掌握操作系统的进程管理。(2)了解操作系统的I/O。11 正则表达式(1)掌握常见正则表达式符号。(2)熟练运用正则表达式解决实际问题(比如匹配电话号码、邮箱、域名等)。

java开发面试题哪里有

1)2017Java面试题及答案:什么是线程?线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒。Java在语言层面对多线程提供了卓越的支持,它也是一个很好的卖点。欲了解更多详细信息请点击这里。2)2017Java面试题及答案:线程和进程有什么区别?线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务。不同的进程使用不同的内存空间,而所有的线程共享一片相同的内存空间。别把它和栈内存搞混,每个线程都拥有单独的栈内存用来存储本地数据。更多详细信息请点击这里。3)2017Java面试题及答案:如何在Java中实现线程?在语言层面有两种方式。java.lang.Thread 类的实例就是一个线程但是它需要调用java.lang.Runnable接口来执行,由于线程类本身就是调用的Runnable接口所以你可以继承java.lang.Thread 类或者直接调用Runnable接口来重写run()方法实现线程。更多详细信息请点击这里.4)2017Java面试题及答案:用Runnable还是Thread?这个问题是上题的后续,大家都知道我们可以通过继承Thread类或者调用Runnable接口来实现线程,问题是,那个方法更好呢?什么情况下使用它?这个问题很容易回答,如果你知道Java不支持类的多重继承,但允许你调用多个接口。所以如果你要继承其他类,当然是调用Runnable接口好了。更多详细信息请点击这里。5)2017Java面试题及答案:Thread 类中的start() 和 run() 方法有什么区别?这个问题经常被问到,但还是能从此区分出面试者对Java线程模型的理解程度。start()方法被用来启动新创建的线程,而且start()内部调用了run()方法,这和直接调用run()方法的效果不一样。当你调用run()方法的时候,只会是在原来的线程中调用,没有新的线程启动,start()方法才会启动新线程。更多讨论请点击这里6)2017Java面试题及答案:Java中Runnable和Callable有什么不同?Runnable和Callable都代表那些要在不同的线程中执行的任务。Runnable从JDK1.0开始就有了,Callable是在JDK1.5增加的。它们的主要区别是Callable的 call() 方法可以返回值和抛出异常,而Runnable的run()方法没有这些功能。Callable可以返回装载有计算结果的Future对象。我的博客有更详细的说明。7)2017Java面试题及答案:Java中CyclicBarrier 和 CountDownLatch有什么不同?CyclicBarrier 和 CountDownLatch 都可以用来让一组线程等待其它线程。与 CyclicBarrier 不同的是,CountdownLatch 不能重新使用。点此查看更多信息和示例代码。

重分悬赏JAVA面试问题

JAVA程序员面试32问 第一,谈谈final, finally, finalize的区别。 第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? 第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。 第四,&和&&的区别。 第五,HashMap和Hashtable的区别。 第六,Collection 和 Collections的区别。 第七,什么时候用assert。 第八,GC是什么? 为什么要有GC? 第九,String s = new String(“xyz“);创建了几个String Object? 第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 第十一,short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 第十二,sleep() 和 wait() 有什么区别? 第十三,Java有没有goto? 第十四,数组有没有length()这个方法? String有没有length()这个方法? 第十五,Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型? 第十六,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别? 第十七,给我一个你最常见到的runtime exception。 第十八,error和exception有什么区别? 第十九,List, Set, Map是否继承自Collection接口? 第二十,abstract class和interface有什么区别? 第二十一,abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized? 第二十二,接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)? 第二十三,启动一个线程是用run()还是start()? 第二十四,构造器Constructor是否可被override? 第二十五,是否可以继承String类? 第二十六,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 第二十七,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 第二十八,编程题: 用最有效率的方法算出2乘以8等於几? 第二十九,两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对? 第三十,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上? 第三十二,编程题: 写一个Singleton出来。 以下是答案 第一,谈谈final, finally, finalize的区别。 final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载 finally—再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。 finalize—方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。 第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? 匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现。 第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。 Nested Class (一般是C++的说法),Inner Class (一般是JAVA的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。具体可见

面试官问java面试题有看过那些java书和技术,怎么回答

初级:《java编程思想第四版》中级:《精通Spring 4.X:企业应用开发实战》中高级:《深入理解java虚拟机》、《spring cloud 微服务实战》高级:《大型网站技术架构》当然还有很多,这里是我个人的推荐


声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,谢谢。

上一篇: 女人梦见办喜事的场面,女人梦见自己结婚办喜事的场面(女人梦里有这3个兆头)

下一篇: 电脑入门视频教程免费(0基础小白想学ps,pr,ae视频制作,从哪个网站学习正规)



推荐阅读

网站内容来自网络,如有侵权请联系我们,立即删除! | 软文发布 | 粤ICP备2021106084号