蜜蜂职场文库 > 面试技巧 >

java软件工程师面试题

时间: 小龙 面试技巧

  Java软件工程师在面试中,想要赢得面试官的认可,那么做好准备,了解面试问题很有必要,以下是小编帮你们整理的java软件工程师面试题,一起来学习啦。

  java软件工程师面试题(一)

  1.说明Oracle数据库逻辑备份和物理逻辑备份的方式。

  Oracle备份包括逻辑备份和物理备份

  1)逻辑备份

  数据库的逻辑备份包含只读一个数据库记录和将记录写入文件

  a.输出(Export)输出可以是整个数据库、指定用户或指定表

  b.输入(Import)输入将输出建立的二进制转储文件读入并执行其命令

  2)物理备份

  物理备份包含拷贝构成数据库的文件而不管其逻辑内容。

  Oracle支持两种不同类型的物理文件备份:脱机备份(offline backup)和联机备份(online backup)

  a.脱机备份:脱机备份用在当数据库已正常关闭,数据库处于“offline”时,要备份下列文件:

  所有数据文件、所有控制文件、所有联机日志、init.ora(可选的)

  2.Tomcat服务器的默认端口是多少?怎样修改tomcat的端口?

  默认端口为8080,可以通过server.xml的Connector元素的port属性修改端口号。

  3.多线程的一种实现方法,都是什么?同步的方法有几种?都是什么?

  多线程有两种实现方法:继承Thtead类或者实现Runnable接口

  实现同步也有两种方法:一种是同步方法,另一种是同步代码块。

  同步方法是在方法返回类型前面奖赏synchronized关键字

  同步代码快是synchronized(这里写需要同步的对象){.....}

  java软件工程师面试题(二)

  1.谈一下聚簇索引和非聚簇索引的区别以及各自的优缺点

  聚簇索引:表中存储的数据按照索引的顺序存储,检索效率比普通索引高,但对数据新增/修改/删除的影响比较大

  非聚簇索引:不影响表中的数据存储顺序,检索效率比聚簇索引,对数据新增/修改/删除的影响很小

  2.死锁的必要条件?怎么克服?

  产生死锁的四个必要条件:

  互斥条件:一个资源每次只能被一个进程使用

  请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。 不剥夺条件:进程已获得的资源,在未使用完之前,不能强行剥夺。 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

  这四个是死锁的必要条件:只要系统发生死锁,这些条件必然成立,二只要上述条件之一不满足,就不会发生死锁。

  死锁的解决方法:

  a.撤销限于死锁的全部进程

  b.逐个撤销限于死锁的进程,直到死锁不存在

  c.从限于死锁的进程中逐个强迫放弃所占用的资源,知道死锁小时

  d.从另外一些进程哪里强行剥夺足够数量的资源分配给死锁,以接触死锁状态。 115.描述重做与回滚的认识

  重做日志生成日志文件,是为将来恢复数据使用的。

  回滚段保存未提交数据,是为支持事务而其作用的。

  3.索引组织表,聚簇表的用途

  索引组织表:数据按主码存储和排序,同索引结构一样,不过数据直接存储于主码后面。使用与信息检索、空间和OLAP程序。

  索引组织表的使用情况:

  a.代码查找表

  b.经常通过主码访问的表

  c.构建自己的索引结构

  d.加强数据的共同定位,要数据按特定顺序物流存储

  e.经常用between...and...对主码或唯一码进行查询。数据物理上分类查询。如一张订单表,按日期装载数据,想查单个客户不同时期的订货和统计情况。

  索引聚簇表:索引聚簇表相关的表共享统一数据块中的相同列,并把相关数据存储中同一个数据块上。创建索引聚簇表中最重要的是对SIZE参数有很好的估量,否则聚簇将会降低空间利用,降低效率。

  使用索引聚簇表的注意点:

  a.如果表中数据由大量DML数据的话,那么聚簇将不适用,因为会消极地影响到DML性能。 b.聚簇中,全表扫描将受到影响。这是因为将扫描聚簇中不同的数据,额外增加很多无用的数据。

  c.如果经常Truncate表和装载表的话,聚簇将不适用。聚簇中的表无法被Truncate的,这是因为每块中不只是存储一张表的数据。SQL>truncate table emp; ORA-03292:table to be truncated is part of a cluster.

  d.如果大部分是读取操作,且通过聚簇码索引或聚簇表中其他索引来读取的话,聚簇将会比较适用。

  java软件工程师面试题(三)

  1.消耗资源的SQL的定位方法

  Select sql_text from v$sql where disk_reads >1000 or (executions > 0 and

  buffer_get/executions>30000);

  SELECT * FROM (SELECT sql_text,buffer_gets,disk_reads from v$sql ORDER BY

  buffer_gets,disk_reads DESC) WHERE ROWNUM<=10;

  2.对触发器的认识

  触发器是表上的程序,只要提供数据添加、修改、和删除后的处理方法,可以用来检查数据及进行数据更新,也可以分担一些前端应用程序撰写的逻辑规则。用场景:触发器可以查询其他表,而且可以包含复杂的SQL语句。他们主要用于强制复杂的业务规则或要求。 触发器的主要应用场合概括起来讲有以下几种:

  1)当向一张表中添加或删除记录时,需要在相关表中进行同步操作。比如,当为应用系统添加一个系统用户时,需要同时向权限表中添加该用户的缺省权限,此时就编写系统用户表的触发器在添加记录动作时触发。

  2)当表上某列数据的值与其他表中的数据有关联时。比如,当客户进行欠款消费,可以生成订单时通过设计触发器判断客户的累计欠款是否超出了最大限额。

  3)当需要对某张表进行跟踪时。比如,当人事表中有人离职时,第一时间通知或更改相关标的值。

  3.对于ORA-01555错误的认识

  ORA-01555错误的产生:一致性读(Consistent Get)和延迟块清除(Delayed Block Cleanout)

  4.将oracle数据库更改为归档模式,写出步骤

  具体步骤如下:

  1)以exp方式在线备份数据库到指定位置;

  2)观察当前数据库是以服务器参数文件(spfile)方式 启动还是一参数文件(pfile)方式启动:SQL> show parameter spfile;NAME TYPE VALUE---------------------------------------spfile string/home/db/oracle/10g/spfile XXXX.ora value后有内容,说明数据库以服务器参数文件方式启动,这里的spfile文件对应的裸设备为/dev/vgdata/rspfile(通过查看/home/db/oracle/pfile/dbs/initSID);

  3)关闭所有实例(shutdown immediate);

  4)任意选取一个实例,创建参数文件到指定路径:SQL>create

  pfile=”/home/db/oracle/pfile.ora”;

  5)修改pfile.Ora文件,添加参数cluster_database=false;

  6)以修改之后的参数文件按nomount方式启动数据库:SQL>alert nomount pfile=”/home/db/oracle/pfile.ora”;

  7)使数据库以exclusive方式启动:SQL>alert database mount exclusive

  8)改变归档方式:SQL>alert database archivelog

  9)将pfile参数中的cluster_database重新更改为“true”

  10)更新服务器参数文件:SQL>create spfile from pfile=”/home/db/oracle/pfile.ora”

  11)关闭数据数据实例:SQL>shutdown immediate;

  12)分别在两个节点上启动数据库:SQL>startup;

  13)在两个节点上分别检查归档模式是否更改成功:SQL>archive log list;Database log mode Archive Mode Automatic archival Enabled Archive destination/home/db/oracle/10g/dbs/arch Oldest online log sequence 489 Next log sequence to archive 491 Current log sequence 491完成。

  
看了“java软件工程师面试题”

50436