关闭

java程序员面试真题及详解2017(纯手动)

标签: 面试面试真题
974人阅读 评论(1) 收藏 举报
分类:

这是本人第一次面试真题及以后的每一次面试都会整理。这一次的面试题倒是挺简单的。
注:每个题基本不会深究,知道如何解答即可。


填空题

1.Java之所以可以实现跨平台,是因为Java程序在运行时使用了()。

JVM
JVM是Java虚拟机。

2.JAVA中类的访问修饰符有();类成员的访问修饰符有()。

类:仅有public ,friendly
成员属性:public、protected、friendly、priavate
成员方法:public、protected、friendly、priavate
friendly不是关键字,如果是默认权限,则没有任何修饰符。

3.JAVA程序中异常处理的关键字是(),抛出异常的关键字是()。

Java的异常处理是通过5个关键词来实现的:try、catch、throw、throws和finally。
一般情况下是用try来执行一段程序,如果系统会抛出(throw)一个异常对象,可以通过它的类型来捕获(catch)它,或通过总是执行代码块(finally)来处理;try用来指定一块预防所有异常的程序;catch子句紧跟在try块后面,用来指定你想要捕获的异常的类型;throw语句用来明确地抛出一个异常;throws用来声明一个方法可能抛出的各种异常(当然声明异常时允许无病呻吟);finally为确保一段代码不管发生什么异常状况都要被执行。

4.Window的()事件在浏览器完成页面加载后立即触发。

页面加载完成有两种事件:
一是ready,表示文档结构已经加载完成(不包含图片等非文字媒体文件);
二是onload,指示页面包含图片等文件在内的所有元素都加载完成。

5.ER模型的组成包括的元素为()、()、()。

实体-联系模型(entity-relationship model),简称为E/R模型。在E/R模型中,数据结构被表示为“实体-联系”图,图中有三个主要的元素类型:实体;属性; 关系。


简答题

1.一个“.java”源文件中是否可以包括多个类(不是内部类)?有什么限制?

答:这个是可以的,一个“.java”源文件里面可以包含多个类,但是只允许有一个public类,并且类名必须和文件名一致。
每个编译单元只能有一个public 类。这么做的意思是,每个编译单元只能有一个公开的接口,而这个接口就由其public 类来表示。

2.静态变量和实例变量的区别?(面试中经常遇到)

答:
在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。
在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。
例如,对于下面的程序,无论创建多少个实例对象,永远都只分配了一个staticVar变量,并且每创建一个实例对象,这个staticVar就会加1;但是,每创建一个实例对象,就会分配一个instanceVar,即可能分配多个instanceVar,并且每个instanceVar的值都只自加了1次。

public class Test11 {
    public static int staticVar = 0;
    public int instanceVar = 0;

    public Test11() {
        staticVar++;
        instanceVar++;
        System.out.println("staticVar=" + staticVar + ",instanceVar="
                + instanceVar);
    }

    public static void main(String[] args) {
        Test11 test = new Test11();
        Test11 test1 = new Test11();
        Test11 test2 = new Test11();
    }
}

输出

staticVar=1,instanceVar=1
staticVar=2,instanceVar=1
staticVar=3,instanceVar=1

3.session与cookie区别?

1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用COOKIE。
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
5、所以个人建议:
将登陆信息等重要信息存放为SESSION
其他信息如果需要保留,可以放在COOKIE中

4.MVC各个部分是由哪些技术来实现的。如何实现。

Model 代表的是应用的业务逻辑( 通过JavaBean, EJB 组件实现), View 是应用的表示面( 由 JSP 页面产生), Controller 是提供应用的处理过程控制( 一般是一个 Servlet)。

5.J2EE是技术还是平台还是框架?主要包含那些技术?

首先,它肯定是一个框架。名称是Java2平台企业版(Java 2 Platform,Enterprise Edition)。
J2EE应用服务器它包括两大容器 EJB容器+Web容器,即业务逻辑层+表示层。
两大组件Web组件+Ejb组件
Web组件(即三种技术):Servlet、JSP、JavaBean,Servlet是Web服务器的功能扩展,接受Web请求,返回动态的Web页面。Web容器中的组件可以使用EJB中的组件来完成复杂的业务逻辑。值得注意的是静态的HTML页面和Applets不算是Web层组件。
EJB组件(三种技术):会话Bean、消息驱动Bean、实体Bean。会话Bean:着重业务逻辑的实现与控制,负责与Web层通信,给Web层提供访问业务数据的接口。当客户端完成执行过程的时候,会话Bean及相关数据会消失。实体Bean:代表持久数据,数据相当于存储在数据库表中,它负责保存业务数据,给会话Bean访问业务数据的接口。消息驱动Bean:用于接收、处理客户通过JMS发送过来的消息,允许业务组件接收衣服的JMS消息。


6.数据库约束并简单描述(5种)。

首先要想到主键约束,外键约束,非空。然后还有检查约束(check),唯一约束
1.—-主键约束(Primay Key Coustraint) 唯一性,非空性
2.—-唯一约束 (Unique Counstraint)唯一性,可以空,但只能有一个
3.—-检查约束 (Check Counstraint) 对该列数据的范围、格式的限制(如:年龄、性别等)
4.—-默认约束 (Default Counstraint) 该数据的默认值
5.—-外键约束 (Foreign Key Counstraint) 需要建立两表间的关系并引用主表的列


编程题

1.三位数水仙花数。(题意不详述了)。

解析:大家肯定都有过编程基础了。怎样解答,肯定得有一个等式来证明。那就是这个水仙花数S=个位数立方+十位数立方+百位数立方
然后呢,就是把每一个个位数十位数百位数求出来即可啦。并且我们都知道一个数的几次方可以这样表示pow(x,y),这表示x的y次方。
另一种思路就是由数字1,5,3组合起来的只要满足
a^3+b^3+c^3 = a*100+b*10+c即可


public class Flower_number {
     public static void main(String[] args) {
         int i=0;
         int m,n;
         for(int a=1;a<10;a++){
             for(int b=0;b<10;b++){
                 for(int c=0;c<10;c++){
                     m=a*100+b*10+c;
                     n=a*a*a+b*b*b+c*c*c;
                     if(m==n){
                         i++;
                         System.out.println("水仙花数为"+m);
                     }
                 }
             }
         }
         System.out.println("水仙花数总共有 "+i+" 个");

     }
 }

SQL语句

数据库查询语句本人也总结过,详见本人数据库里面的帖子
有班级表CLASS和学生表STUDENT,两个表通过class_id进行关联,其表结构如下:


表


1、写出创建学生表STUDENT的SQL语句,注意添加相关的约束,要求表明、字段名都是英文。(自己写的,参考答案)

CREATE TABLE STUDENT(
S_NO CHAR(6) PRIMARY KEY,
S_NAME VARCHAR2(10) NOT NULL,
S_SEX CHAR(2) CHECK(SEX = ‘男’ OR SEX = ‘女’),
S_BIRTHDAY DATE ,
S_SCORE NUMBER(5,1),
S_ADDF NUMBER(5,1),
CLASS_NO CHAR(5),
FOREIGN KEY(CLASS) REFERNCES CLASS(CLASS_NO)
)


2、查询编号为c002班级中所有的女同学。(自己手写,参考答案)

思路:此题要我们把同学查出来,而且班级编号也要有,而Student表里包含这两个条件。
SELECT Sname FROM Student WHERE S_SEX = ‘女’ AND CLASS_ID = ‘c002’


3、 查询总分(入学成绩+附加分)550和600之间所有学生,并且按照降序排列

思路:首先,要知道查询的学生,然后条件是总分的范围条件,还有降序的要求。(降序知道用DESC就OK,如果升序啥也不用写,系统查询默认升序)
SELECT * FROM Student WHERE S_SCORE+S_ADDF BETWEEN 550 AND 600 ORDER BY S_NO DESC


4、将所有名字中带“斌”或“潇”的学生成绩加30%。

思路:首先查出名字带“斌”或“潇”,并且我们知道成绩在Student表里,这样就知道了当我们更新表时,更新的是Student表。
第一步:
SELECT S_NO FROM Student WHERE S_NAME = ‘%斌%’ OR S_NAME = ‘%潇%’
第二步
UPDATE Student SET S_SCORE = S_SCORE * (1+30%) WHERE S_NO IN (SELECT S_NO FROM Student WHERE S_NAME = ‘%斌%’ OR S_NAME = ‘%潇%’)


5、查询入学成绩大于其所在班级平均入学成绩的所有学生的学号、姓名、成绩。

思路:首先我们要知道WHERE后面千万不能跟聚合函数!举个错误示范:SELECT Sname FROM Student WHERE SAGE = MAX(SAGE)
遇到这样的题目,我们要分步作答,先求出平均成绩然后再进行比较
第一步:计算平均成绩。
SELECT AVG(S_SCORE) FROM Student
第二步:查询。
SELECT S_NO,S_NAME,S_SCORE FROM Student WHERE S_SCORE>(SELECT AVG(S_SCORE) FROM Student)


延伸:为什么上面不用GROUP BY,然后在后面的HAVING里面添加查询条件呢,因为上面这个题目并没有让我们分组,如果题目要求我们查询每一门课程的考试平均成绩的话,我们才会用到GROUP BY分组查询。当然我们也可以用GROUP BY,因为我们通过学号把每一个学生分组,然后就可以用HAVING+聚合函数进行查询了。
因此上面查询语句也可以写为:
SELECT S_NO,S_NAME,S_SCORE FROM Student GROUP BY S_NO HAVING S_SCORE > AVG(S_SCORE)


6、创建存储过程del_student,输入参数sno,找到并删除该条记录。(student表)。

3
0
查看评论

Java程序员面试笔试真题与解析 高清完整.pdf版下载

  • 2017-01-21 21:37
  • 3.60MB
  • 下载

Java程序员面试笔试真题与解析(2017年版)

  • 2017-05-27 12:03
  • 3.60MB
  • 下载

java程序员面试常见面试题及答案整理

JAVA相关基础知识   1、面向对象的特征有哪些方面    1.抽象:   抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。  ...
  • ourpush
  • ourpush
  • 2016-12-17 13:20
  • 2471

Java面试笔试题大汇总(最全+详细答案)

说明:有人说, 有些面试题很变态,个人认为其实是因为我们基础不扎实或者没有深入。本篇文章来自一位很资深的前辈对于最近java面试题目所做的总结归纳,有170道题目 ,知识面很广 ,而且这位前辈对于每个题都自己测试给出了答案 ,如果你对某个题有疑问或者不明白,可以电脑端登录把题目复制下来然后发表评论,...
  • tanggao1314
  • tanggao1314
  • 2016-02-01 15:23
  • 19128

Java程序员面试笔试真题与解析_迷你书_2017版

  • 2017-02-12 18:47
  • 3.60MB
  • 下载

Java程序员面试笔试真题库_2017版 高清完整.pdf版下载

  • 2017-02-22 22:31
  • 2.01MB
  • 下载

Java程序员面试笔试真题库_2017版_迷你书

  • 2016-11-10 21:16
  • 2.01MB
  • 下载

Java程序员面试笔试真题与解析_迷你书_2017版.pdf

  • 2017-10-13 12:04
  • 3.60MB
  • 下载

Java程序员面试笔试真题库

  • 2016-11-11 23:18
  • 2.01MB
  • 下载

2017 java程序员面试宝典

转自点击打开链接 <pre class="java" name="code">1:JDK与JRE JDK:JAVA Development Kit, java开发工具包; 包括各种类库和工具,当然也包括JRE JRE:JAVA Runtime En...
  • bigheadyushan
  • bigheadyushan
  • 2017-08-30 00:09
  • 966
    个人资料
    • 访问:11145次
    • 积分:554
    • 等级:
    • 排名:千里之外
    • 原创:35篇
    • 转载:9篇
    • 译文:0篇
    • 评论:15条
    一生学习 无怨无悔!!!
    好学若饥虚心若愚