经典Java面试题及答案(146道企业真题)Java编程面试题

publicstaticvoidmain(String[]args){Stringstr1="hello";Stringstr2="he"+newString("llo");Stringstr3="he"+"llo";System.err.println(str1==str2);System.err.println(str1==str3);}运行结果:

false

true

往集合在添加元素时,调用add(Object)方法的时候,首先会调用Object的hashCode()方法判断hashCode是否已经存在,如不存在则直接插入元素;如果已存在则调用Object对象的equals()方法判断是否返回true,如果为true则说明元素已经存在,如为false则插入元素。

●List、Set是继承Collection接口;Map不是。

●List:元素有放入顺序,元素可重复,通过下标来存取。

●Map:元素按键值对存取,无放入顺序。

●Set:元素无存取顺序,元素不可重复(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的hashCode决定的,其位置其实是固定的)。

classTempTest{privatevoidtest1(inta){a=5;System.out.println("test1方法中的a="+a);}publicstaticvoidmain(String[]args){TempTestt=newTempTest();inta=3;//传递后,test1方法对变量值的改变不影响这里的at.test1(a);System.out.println("main方法中的a="+a);}}运行结果是:

test1方法中的a=5

main方法中的a=3

按引用传递是指的是在方法调用时,传递的参数是按引用进行传递,其实传递的是引用的地址,也就是变量所对应的内存空间的地址。传递的是值的引用,也就是说传递前和传递后都指向同一个引用(也就是同一个内存空间)。示例如下:

classTempTest{privatevoidtest1(Aa){a.age=20;System.out.println("test1方法中的age="+a.age);}publicstaticvoidmain(String[]args){TempTestt=newTempTest();Aa=newA();a.age=10;t.test1(a);System.out.println("main方法中的age="+a.age);}}classA{publicintage=0;}运行结果:

test1方法中的age=20

main方法中的age=20

NullPointerException-空指针引用异常

ClassCastException-类型强制转换异常。

IndexOutOfBoundsException-下标越界异常

NumberFormatException-数字格式异常

所谓事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。

例如在关系数据库中,一个事务可以是一条SQL语句、一组SQL语句或整个程序。简单举个例子就是你要同时修改数据库中两个不同表的时候,如果它们不是一个事务的话,当第一个表修改完,可是第二表改修出现了异常而没能修改的情况下,就只有第二个表回到未修改之前的状态,而第一个表已经被修改完毕。而当你把它们设定为一个事务的时候,当第一个表修改完,可是第二表改修出现了异常而没能修改的情况下,第一个表和第二个表都要回到未修改的状态!这就是所谓的事务回滚。

例如,在将资金从一个帐户转移到另一个帐户的银行应用中,一个帐户将一定的金额贷记到一个数据库表中,同时另一个帐户将相同的金额借记到另一个数据库表中。由于计算机可能会因停电、网络中断等而出现故障,因此有可能更新了一个表中的行,但没有更新另一个表中的行。如果数据库支持事务,则可以将数据库操作组成一个事务,以防止因这些事件而使数据库出现不一致。如果事务中的某个点发生故障,则所有更新都可以回滚到事务开始之前的状态。如果没有发生故障,则通过以完成状态提交事务来完成更新。

A.CFHGEBDA

B.CDFEGHBA

C.FGHCDEBA

D.CFHGEDBA

原因:对于二叉树的遍历方式一般分为三种先序、中序、后序三种方式:

先序遍历(根左右)若二叉树为空,则不进行任何操作,否则

●访问根结点。

●先序方式遍历左子树。

●先序遍历右子树。

中序遍历(左根右)若二叉树为空,则不进行任何操作,否则

●中序遍历左子树。

●中序遍历右子树。

后序遍历(左右根)若二叉树为空,则不进行任何操作,否则

●后序遍历左子树。

●后序遍历右子树。

因此,根据题目给出的先序遍历和中序遍历,可以画出二叉树:

A.有序数组

B.有序链表

C.AVL树

D.Hash表

看下图:

平衡二叉树的查找,插入和删除性能都是O(logN),其中查找和删除性能较好;哈希表的查找、插入和删除性能都是O(1),都是最好的。所以最后的结果选择:CD。

A.快速排序

B.堆排序

C.归并排序

D.冒泡排序

A.83251647

B.32851467

C.38251674

D.82351476

初始化序列:18625473,小根堆就是要求结点的值小于其左右孩子结点的值,左右孩子的大小没有关系,那么小根堆排序之后为:12435678;中序遍历:左根右,故遍历结果为:83251647,故最后选择的结果:A

intfoo(intn){if(n<2)returnn;returnfoo(n-1)+foo(n-2);}A.5

B.7

C.8

D.1

A.37.5%

B.32.5%

C.28.6%

D.26.1%

做这道题首先得了解犯罪率是什么?犯罪率就是犯罪人数与总人口数的比。因此可以直接得出公式:(30.01%)/(30.01%+5*0.015%)=28.6%,当然如果不好理解的话,我们可以实例化,比如B区假设5000人,A区3000人,A区的犯罪率为0.01%,那么A区犯罪人数为30人,B区的犯罪率为0.015%,那么B区的犯罪人数为75人,求发生在A区的可能性,就是说A区的犯罪人数在总犯罪人数的多少,也就是30/(30+75)=0.2857,当然,也可以回归到我们高中遗忘的知识:

假设C表示犯案属性

在A区犯案概率:P(C|A)=0.01%

在B区犯案概率:P(C|B)=0.015%

在A区概率:P(A)=3/8

在B区概率:P(B)=5/8

犯案概率:P(C)=(3/80.01%+5/80.015%)

根据贝叶斯公式:P(A|C)=P(A,C)/P(C)=[P(C|A)P(A)]/[P(C|A)P(A)+P(C|B)P(B)]也可以算出答案来,最后结果选择为:C

A.Socket

B.共享内存

C.消息队列

D.信号量

管道(Pipe)及有名管道(namedpipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信;

信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;linux除了支持Unix早期信号语义函数sigal外,还支持语义符合Posix.1标准的信号函数sigaction(实际上,该函数是基于BSD的,BSD为了实现可靠信号机制,又能够统一对外接口,用sigaction函数重新实现了signal函数);

报文(Message)队列(消息队列):消息队列是消息的链接表,包括Posix消息队列systemV消息队列。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺点。

共享内存:使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。

信号量(semaphore):主要作为进程间以及同一进程不同线程之间的同步手段。

套接口(Socket):更为一般的进程间通信机制,可用于不同机器之间的进程间通信。起初是由Unix系统的BSD分支开发出来的,但现在一般可以移植到其它类Unix系统上:Linux和SystemV的变种都支持套接字。

故最后选择的结果为:ABCD

A.栈区

B.堆区

C.全局区

D.代码区

原因:静态变量的修饰关键字:static,又称静态全局变量。故最后选择的结果为:C

A.在Name字段上添加主键

B.在Name字段上添加索引

D.在Age字段上添加索引

A.找不到该页面

B.禁止访问

C.内部服务器访问

D.服务器繁忙

A.Applicationlayer

B.Presentationlayer

C.Transportlayer

D.Networklayer

19、一个栈的入栈序列是A,B,C,D,E,则栈的不可能的输出序列是?(C)

A.EDCBA

B.DECBA

C.DCEAB

D.ABCDE

堆栈分别是先进后出,后进先出,选项a是abcde先入栈,然后依次出栈,正好是edcba。选项b是abcd先依次入栈,然后d出栈,e再入栈,e出栈选项c是错误的,不可能a先出栈。选项d是a入栈,然后a出栈;b再入栈,b出栈。依此类推。最后的结果选择C。

A.stack

B.datasection

C.registerset

D.filefd

●线程共享的内容包括:

进程代码段

进程的公有数据(利用这些共享的数据,线程很容易的实现相互之间的通讯)

进程打开的文件描述符

信号的处理器

进程的当前目录和进程用户ID与进程组ID

●线程独有的内容包括:

线程ID

寄存器组的值

线程的堆栈

错误返回码

线程的信号屏蔽码

所以选择为BD。

A.使用了局部变量

B.有一个分支不调用自身

C.使用了全局变量或者使用了一个或多个参数

D.没有循环调用

A.分析单词是怎样构成的

B.分析单词串是如何构成语言和说明的

C.分析语句和说明是如何构成程序的

D.分析程序的结构

●词法分析(lexicalanalysis)词法分析是编译过程的第一个阶段。这个阶段的任务是从左到右的读取每个字符,然后根据构词规则识别单词。词法分析可以用lex等工具自动生成。

●语法分析(syntaxanalysis)语法分析是编译过程的一个逻辑阶段。语法分析在词法分析的基础上,将单词序列组合成各类语法短语,如“程序”,“语句”,“表达式”等等。语法分析程序判断程序在结构上是否正确。

●语义分析(semanticanalysis)属于逻辑阶段。对源程序进行上下文有关性质的审查,类型检查。如赋值语句左右端类型匹配问题。

所以BCD都属于词法分析,选择结果为BCD。

A.空闲让进

B.忙则等待

C.有限等待

D.让权等待

A.CPU调度给优先级更高的线程

B.阻塞的线程获得资源或者信号

D.获得spinlock未果

A.状态模式

B.装饰模式

C.代理模式

D.观察者模式

publicclassTest{publicstaticvoidmain(String[]args){Lista=null;test(a);System.out.println(a.size());}publicstaticvoidtest(Lista){a=newArrayList();a.add("abc");}}A.0

B.1

C.java.lang.NullPointerException

D.以上都不正确

A.ps

B.cat

C.more

D.sep

A.程序计数器

B.堆

C.方法区

D.本地方法栈

A.阻塞队列是线程安全的

B.阻塞队列的主要应用场景是“生产者-消费者”模型

C.阻塞队列里的元素不能为null

D.阻塞队列的实现必须显示地设置容量

A.CountDownLatch

B.CyclicBarrier

C.Semaphore

D.FutureTask

引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为null,而原始类型实例变量的缺省值与它们的类型有关。

classStringUtil{intcompare(char[]v1,char[]v2){Stringstr1=newString(v1);Stringstr2=newString(v2);intresult=str1.compareTo(str2);returnresult==00:(result>01:-1);}}33、Java出现OutOfMemoryError(OOM)的原因有那些?出现OOM错误后,怎么解决?

触发java.lang.OutOfMemoryError:最常见的原因就是应用程序需要的堆空间是大的,但是JVM提供的却小。这个的解决方法就是提供大的堆空间即可。

解决方案:你应该确保有足够的堆空间来正常运行你的应用程序,在JVM的启动配置中增加如下配置:-Xmx1024m,流量/数据量峰值:应用程序在设计之初均有用户量和数据量的限制,某一时刻,当用户数量或数据量突然达到一个峰值,并且这个峰值已经超过了设计之初预期的阈值,那么以前正常的功能将会停止,并触发java.lang.OutOfMemoryError:Javaheapspace异常解决方案,如果你的应用程序确实内存不足,增加堆内存会解决GCoverheadlimit问题,就如下面这样,给你的应用程序1G的堆内存:java-Xmx1024mcom.yourcompany.YourClass。

A.栈是先进后出的线性表

B.栈只能顺序存储

C.栈具有记忆功能

D.对栈的插入和删除操作中,不需要改变栈底指针

A.冒泡排序为n/2

B.冒泡排序为n

C.快速排序为n

D.快速排序为n(n-1)/2

classPerson{intarr[]=newint[10];publicstaticvoidmain(Stringargs[]){System.out.println(arr[1]);}}A.编译时将产生错误

B.编译时正确,运行时将产生错误

C.输出空

D.输出0

publicclassTest{publicstaticvoidmain(String[]args){StringBuffera=newStringBuffer("A");StringBufferb=newStringBuffer("B");operator(a,b);System.out.println(a+","+b);}publicstaticvoidoperator(StringBufferx,StringBuffery){x.append(y);y=x;}}A.A,A

B.A,B

C.B,B

D.AB,B

A.把对象转换成为字符串的形式通过网络传输,在另一端接收到字符串把对象还原出来

B.把程序数据从数据库中读出来

C.从XML配置文件中读取程序的配置信息

D.把程序数据保存为文件

intx=0;inty=10;do{y--;++x;}while(x<6);System.out.println(x+","+y);A.5,6

B.5,5

C.6,4

D.6,6

publicstaticvoidcomplicatedexpression_f(){intx=20,y=30;booleanj;j=x>50&&y>60||x>50&&y<-60||x<-50&&y>60||x<-50&&y<-60;System.out.println(j);}

THE END
1.8个数据库设计典型实例PowerBuilder进行信息系统开发的基本知识。下面将通过一个个实例来说明如何利用 PowerBuilder作为数据库前端开发工具,开发出具有使用价值的管理信息系统。 人事管理系统实例是本书的第一个例子。因此对于实例开发过程中所涉及到的一些知 识会有重点讲述。 随着计算机技术的飞速发展,计算机在企业管理中应用的普及,利用计算机...http://www.360doc.com/document/14/0214/20/15804455_352536542.shtml
1.一个简单数据库设计例子一个简单数据库设计例子 一个曾经做过的简单的管理系统中数据库设计的例子,包括设计表、ER图、建模、脚本. +++++++++++++++++++++++++++++++++++++++++++++++ 项目信息 Project Name:Book Manager System DB:MySQL5.5 DB Name:db_library Tables...https://blog.csdn.net/Jerry_1126/article/details/44337973
2.sqlserver架构设计mob649e8162842c的技术博客在开始设计之前,了解一些基本要素是非常重要的。这些要素包括: 表:数据存储的基本单元。 字段:表中的列,每个字段都有数据类型。 索引:用于提高查询性能。 关系:表与表之间的联系。 约束:用于限制数据的输入(如主键、外键、唯一约束等)。 三、设计一个简单的数据库 ...https://blog.51cto.com/u_16175492/12561233
3.AlphaFold3来了!全面预测蛋白质与所有生命分子相互作用及结构...(d) VMD:一个分子可视化程序,用于使用 3D 图形和内置脚本显示、动 态化和分析大型生物分子系统。 1.4 蛋白质设计的常用评估指标:NSR、RMSD、GDT、能量评分函数、可 溶性、与靶标之间的结合强度和特异性 3. 蛋白质数据库介绍 1.1 一级蛋白质序列数据库:UniProtKB ...https://cloud.tencent.com/developer/article/2437597
4.MySQL数据库实验实现简单数据库应用系统设计Mysql这篇文章主要介绍了MySQL数据库实验实现简单数据库应用系统设计,文章通过理解并能运用数据库设计的常见步骤来设计满足给定需求的概念模和关系数据模型展开详情,需要的朋友可以参考一下+ 目录 GPT4.0+Midjourney绘画+国内大模型 会员永久免费使用!【 如果你想靠AI翻身,你先需要一个靠谱的工具!】 观前提示:本篇内容为...https://www.jb51.net/article/252268.htm
5.蓝蓝高频面试之数据库系列第一期数据库基础20题前言[toc] 大家好,我是蓝蓝。数据库在国企,银行,研究所的面试过程中,是占比非常大的,也是及其可能被问的知识点,我将其分为四个部分,分为基础理论篇,事务篇,优化篇,大概一共100个题目,最后一部分是最高频的题目,大家加油哈,星球打卡时间为15天,完成打卡一定有https://m.nowcoder.com/discuss/353158849412669440
6.全国计算机二级考试哪个最简单全国计算机二级考试是全国计算机等级考试简称NCRE,是四个等级中的一个等级。包含语言程序设计,包括C、C++、Java、Visual Basic、WEB程序设计;数据库程序设计(包括VisualFoxPro、Access、MySql);MS office高级应用包括Word、EXCEL、PPT办公软件高级应用。计算机二级考试哪个最简单?下面百分网小编带大家一起来看看详细内容,希望...https://www.oh100.com/kaoshi/ncre2/tiku/482381.html
7.软件工程导论作业控制类:是用于对特定于一个或一些用例的控制行为建模的类。 实体类:是用来对必须存储的信息及关联行为建模的类。 5.6 按照设计模型的不同层次和功能,设计元素可以分哪些方面? 答:(1)体系结构元素;(2)构件级元素;(3)接口/界面元素:用户界面、构件接口、系统接口;(4)数据元素:数据库设计、数据结构设计;(5)部署...https://www.unjs.com/zuixinxiaoxi/ziliao/20170805000008_1416273.html
8.java毕业实习报告(精选11篇)在三个月里,所学知识的确有很多,java基础,数据库操作(oracle,mysql),SSH框架(hibernate,struts,spring),网页设计jsp技术等,总之学到了很多曾经陌生的技术。受益匪浅。 一、实习计划 7月10日:简单地了解公司的基本情况,进一步学习了java的基本知识。7月11日—7月13日:学习java相关的编程环境和运行环境的材料,准备...https://www.fwsir.com/Article/html/Article_20141119170516_283897.html
9.软件工程—精选习题集(含参考答案)总复习60道简答题因此,工程网络图是系统分析和系统设计的强有力的工具。19、动态联编答:动态联编指应用系统在运行过程中,当需要执行一个特定服务的时候,选择(或联编)实现该服务的适当算法的能力。20、系统流程图答:一个概括地描绘物理系统的传统工具,表达了数据在系统各部件之间流动的情况。https://www.jianshu.com/p/6875e17271d0
10.案例数据库设计9篇(全文)校企合作的此类实训项目中,进行数据库设计与实现所用知识、技术,基础来自于校内所学,但又远高于校内简单的数据库理论知识,是学生按软件工程流程做项目开发最重要的一个环节,数据库设计的好坏,直接影响后期软件开发和维护。 摘要:该文介绍了如何使用UML进行数据库设计。首先建立静态模型,然后根据映射策略将模型映射为数据...https://www.99xueshu.com/w/ikey3pf3ms57.html
11.什么是BI?企业数字化的规划和落地第三层,数据源层- 即BI的数据层,各个业务系统底层数据库的数据通过 ETL 的方式抽取到BI的数据仓库中完成 ETL 过程,建模分析等等,最终支撑到前端的可视化分析展现。 02、BI在企业IT信息化中的位置 这一点是所有企业如果规划要上BI项目的时候必须弄明白的:BI在IT信息化中到底处于一个什么样的位置?弄清楚定位是信息...https://maimai.cn/article/detail?fid=1778763808&efid=IIU4kC9omHSMNDd9brumRg
12.ASP.NETCore适用于.NET的开源Web框架.NET 是一个开发人员平台,由工具、编程语言、库组成,用于构建许多不同类型的应用程序。 ASP.NET Core 通过专门用于生成 web 应用的工具和库扩展了.NET 开发人员平台。 更深入发掘: 什么是 ASP.NET Core? 了解ASP.NET Core 通过我们的教程、视频课程和文档,了解 ASP.NET Core 提供的所有功能。 https://asp.net/
13.豆瓣967450 个成员 你来替我吃/用 27984 个成员 下班新生活计划 109315 个成员 再见爱人讨论组 2557 个成员 博士互助组---今天你毕业了吗 96234 个成员 法盲互助协会 149802 个成员 我又买鲜花啦 126005 个成员 人间情侣观察 203772 个成员 电影票房·资料库 49664...https://www.douban.com/
14.保障性理论基础在实施保障性分析的过程中,将收集的大量有关保障的数据与保障性分析记录(logistics support analysis record,LSAR),以一定的格式储存到电子计算机内,建立一个包括可靠性、维修性、测试性及各综合技术保障要素等信息在内的独立的保障性分析记录数据库,并在分析过程中不断地更新数据。该数据库用于装备综合技术保障和保障...https://mp.ofweek.com/im/a645693221836
15.积分商城数据库设计:构建一个完美的线上积分兑换平台(积分商城...随着互联网的发展,越来越多的企业开始在线上销售产品和服务。与此同时,也出现了越来越多的积分兑换平台,为消费者提供了更加便捷的积分兑换服务。然而,在构建一个完美的线上积分兑换平台的过程中,数据库设计是非常关键的。 本文将从以下三个方面来介绍积分商城数据库的设计: ...https://www.idc.net/help/150689/