博旭范文网 - 每天发现一点点
每天发现一点点!
  • 简历表格
  • 简历模板
  • 简历封面
  • 简历制作
  • 简历范文
  • 英文简历
  • 履历表
  • 自我介绍
  • 自我评价
  • 面试试题
  • 职场动态
  • 面试技巧
  • 职场打拼
  • 求职谋略
  • 面试经历
  • 面试问题
  • 人事政策
  • HR管理
  • 办公室交际
  • java程序员的面试经历

    分类:面试经历 时间:2017-05-16 本文已影响

    篇一:Java初级程序员面试必备的基础知识总结

    Java基础

    简述Java的基本历史

    java起源于SUN公司的一个GREEN的项目,其原先目的是:为家用消费电子产品发送一个信息的分布式代码系统,通过发送信息控制电视机、冰箱等

    简单写出Java特点,写出5个以上,越多越好

    简单的、面向对象的、分布式的、安全的、稳定的、与平台无关的、可解释的、多线的、动态的语言。

    什么是Java?

    JAVA:一种编程语言

    一种开发环境

    一种应用环境

    一种部署环境

    请写出Java的版本分类,以及每种版本的应用方向

    三种版本:

    JME:是面向内存有限的移动终端. 为消费性产品设计的;

    JSE: 是SUN公司针对桌面开发和低端商务计算方案开发的版本。为笔记本电脑、PC机设计的;

    JEE: 是一种利用JAVA 2平台来简化企业解决方案的开发、部署和管理相关的复杂问题的体系结构。 为企业级的、服务器端的高端应用而设计的;

    描述Java技术的主要特性

    java虚拟机

    垃圾回收

    代码安全性

    描述 Java虚拟机的功能

    (1)通过 ClassLoader 寻找和装载 class 文件

    (2)解释字节码成为指令并执行,提供 class 文件的运行环境

    (3)进行运行期间垃圾回收

    (4)提供与硬件交互的平台

    简述Java代码安全性

    (1)编译时的错误检验

    (2)类装载检查,把本机上的类和网络资源类相分离,在调入类的时候进行检查,因而可以限制任何“特洛伊木马“的应用

    (3)字节码校验

    (4)沙箱机制,限定访问权限

    描述Java垃圾回收机制

    Java 编程语言解除了程序员释放内存的责任。它可提供一种系统级线程以跟踪每一次内存的分配情况。在 Java 虚拟机的空闲周期,垃圾收集线程检查并释放那些可被释放的内存。垃圾收集在 Java 技术程序的生命周期中自动进行,它解除了释放内存的要求,这样能够有效避免内存漏洞和内存泄露(内存泄露就是程序运行期间,所占用的内存一直往上涨, 很容易造成系统资源耗尽而降低性能或崩溃 。

    垃圾回收有以下特点:

    (1)垃圾回收是一个自动的系统行为,程序员不能控制垃圾回收的功能和行为。

    (2)有一些跟垃圾回收相关的方法,比如:System.gc( ) ,调用这些方法,仅仅是在通知垃圾回收程序,至于垃圾回收程序运不运行,什么时候运行,都是无法控制的。

    (3)程序员可以通过设置对象为 null,来标示某个对象不再被需要了, 这只是表示这个对象可以被回收了,并不是马上被回收。

    简述Java代码的运行过程

    (1)加载代码 通过类装载器装载CLASS文件

    (2)校验代码 由字节码校验

    (3)执行代码 由解释器将字节码转换成机器码

    简述如何搭建Java开发环境

    首先下载安装JDK 然后配置环境

    (1)配置PATH,

    (2)配置CLASSPATH

    (3)配置JAVA_HOME

    简述classpath,path,JAVA_HOME的意义和配置方法

    path 操作系统运行环境的路径

    classpath JAVA运行应用程序时所需要的类包的路径

    JAVA_HOME 供需要运行JAVA的程序使用

    请描述:一个完整的Java文件的代码分几个部分,每部分都起什么作用,大致的写法 package 当前类所在位置

    import 当前类运行时所需要的包或类

    public class 类名 {

    属性定义;

    方法定义:

    构造方法定义;

    public static void main(String args []) 例外{ 程序入口

    语句;

    }

    }

    //注释

    Java代码的注释有几种?分别举例说明

    (1) // 单行注解

    (2) /* */ 块注释

    (3) /* *

    * 文档注释

    */

    什么是Java代码的语句,什么是Java代码的块,举例说明

    语句 是一行以分号终止的代码,例:int a;

    块 是以{ }为边界的一些语句的集合 例:public void tt( ){}

    什么是标示符?

    标识符:是赋予变量、类、方法的名称。

    标示符定义的规则?

    首字母只能以字母、下划线、$开头,其后可以跟字母’下划线、$和数字配置CLASSPATH 首字母小写中间用大写字母隔开

    标识符具有一定的含义

    什么是关键字?

    关键字就是编程语言与机器语言的编码约定

    true、false、null、sizeof、goto、const那些是Java关键字

    true 、false 、null 为JAVA的关键字

    Java的基本数据类型有几种?分别是?

    short int long boolean float double char byte

    请写出每种基本类型的默认值?取值范围?分别给出一个定义的例子

    默认值取值范围 示例

    字节型 : 0 -2^7—-2^7-1 byte b=10;

    字符型 : ‘ \u0000′ 0—-2^16-1char c=’c’ ;

    short : 0 -2^15—-2^15-1 short s=10;

    int : 0 -2^31—-2^31-1 int i=10;

    long : 0 -2^63—-2^63-1 long o=10L;

    float : 0.0f -2^31—-2^31-1 float f=10.0F

    double : 0.0d -2^63—-2^63-1 double d=10.0;

    boolean: false true\false boolean flag=true;

    在基本类型中,如果不明确指定,整数型的默认是什么类型?带小数的默认是什么类型? 整数类型 默认为 int

    带小数的默认为 double

    如何定义float类型和long型

    float f = 1.2f

    long l = 1.2L

    篇二:Java程序员面试简历

    篇三:java程序员面试常见问题

    1. 你对面向对象的理解?

    我的思路是:

    回答时从面向对象的三大特征回答。包括三个特征:继承、封装、多态。

    ? 类的继承性是指从已有的一个类来extends子类,子类具有了父类的所有特征,同时,子类也可以有

    新的特性。比如:人是一个类,男人具有了人类的所有的特性,比如思考,比如劳动。同时,男人也有新的特性,比如男人会长胡子。

    ? 类的封装是指类把所有的操作都封闭起来,仅仅提供接口出来让其他人使用,使用的人没有必要懂得

    类里面的操作,只需要懂得操作接口就可以了。比如开汽车,我 们只需要懂得方向盘、刹车、油门等等的使用就可以了,没有必要知道刹车是如何构成的封闭好的操作。同时,封装也提高了程序的可替换性。比如两个汽车公司实 现刹车的方式不一样,但是,只要我们学会了使用刹车,那么,开两个汽车公司的车就都没有问题了,我们不需要考虑他们怎样实现刹车这门技术的。

    ? 类的多态性是一个对象的某项功能可以处理不同类型的问题,或者一个子类可以将父类的某个功能替

    换成新的功能,具体到编程的方面来说实现类的多态有override和overload,也就是重写和重载。 ? 同时面向对象还有一个很重要的概念:抽象。抽象就是一个事物的本质。当然对于本质,不同的角度

    却会有不同的理解。男人,在和女人一起的时候,它的本质是人。在和所有的生物一起的时候,它的本质是动物。(虽然哲学家都说事物的本质只有一个,但是,我仍然坚持我的观点)

    2. java中String类为什么要设计成final呢?

    ?

    ? 不允许其他类继承。这个应该不是最终原因,但这里权且也当成是一个原因。 String类中的成员属性也几乎 都设计成了private final的,这样String就被设计成一个不变类,

    这样有助于共享,提高性能。可以将字符串对象保存在字符串常量池中以供与字面值相同字符串对象共 享。如果String对象是可变的,那就不能这样共享,因为一旦对某一个String类型变量引用的对象值改变,将同时改变一起共享字符串对象的其他 String类型变量所引用的对象的值。

    ? String被设计为不变类,其中的offset,value[]都被设计成private final的,这样在多线程时,

    对String对象的访问是可以保证安全的。java程序语言的许多特性依赖于不可变的String对象

    3. 说说Hashpmap的原理

    ? HashMap概述

    HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。

    ? HashMap的数据结构

    在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,HashMap也不例外。HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。HashMap底层就是一个数组结构,数组中的每一项又是一个链表。当新建一个HashMap的时候,就会初始化一个数组。

    4. 什么是AOP

    1.概念介绍:所谓AOP,即Aspect orientied program,就是面向方面的编程,

    2.什么是方面:所谓“方面”,简单地说,就是将那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性。

    3.Aop的原理:面向切面编程,将程序中的交叉业务逻辑(比如安全,日志,事务等),封装成一个切面,然后注入到目标对象(具体业务逻辑)中去。

    4.实现AOP的技术,主要分为两大类:

    一是采用动态代理技术,利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执行; 二是采用静态织入的方式,引入特定的语法创建“方面”,从而使得编译器可以在编译期间织入有关“方面”的代码

    5. IOC

    控制反转也叫依赖注入。利用了工厂模式将对象交给容器管理,你只需要在spring配置文件中配置相应的bean,以及设置相关的属性,让spring容器来生成类的实例对象以及管理对象。

    6. 数据库触发器的优缺点以及用法

    触发器本质上讲就是事件监控器,可以定义在数据库系统进行某一个操作的前后。

    当数据库系统在进行特定的操作时,发现有触发器定义,就去执行触发器定义的功能,从而满足某些特定的需要。(触发器就是你在做某个操作的时候触发另外一个操作)

    例如,在更新某些数据后,再去更新特定的数据。

    这就可以定义一个触发器完成这样的需要。

    触发器的优点:

    以事件方式来处理. 当数据发生变化的时候, 自动作处理。

    缺点:

    当数据库之间 导出导入的时候, 可能会引起不必要的触发逻辑。

    7. oracle,mysql,SqlServer三种数据库的分页查询的实例

    MySql:

    MySQL数据库实现分页比较简单,提供了 LIMIT函数。一般只需要直接写到sql语句后面就行了。

    LIMIT子 句可以用来限制由SELECT语句返回过来的数据数量,它有一个或两个参数,如果给出两个参数, 第一个参数指定返回的第一行在所有数据中的位置,从0开始(注意不是1),第二个参数指定最多返回行数。例如:

    select * from table WHERE ? LIMIT 10; #返回前10行

    select * from table WHERE ? LIMIT 0,10; #返回前10行

    select * from table WHERE ? LIMIT 10,20; #返回第10-20行数据

    Oracle:

    考虑mySql中的实现分页,select * from 表名 limit 开始记录数,显示多少条;就可以实现我们的分页效果。

    但是在oracle中没有limit关键字,但是有 rownum字段

    rownum是一个伪列,是oracle系统自动为查询返回结果的每行分配的编号,第一行为1,第二行为2,以此类推。。。。

    第一种:

    代码如下:

    SELECT * FROM

    (

    SELECT A.*, ROWNUM RN

    FROM (SELECT * FROM TABLE_NAME) A

    WHERE ROWNUM <= 40

    )

    WHERE RN >= 21

    其中最内层的查询SELECT * FROM TABLE_NAME表示不进行翻页的原始查询语句。ROWNUM <= 40和RN >= 21控制分页查询的每页的范围。

    上面给出的这个分页查询语句,在大多数情况拥有较高的效率。分页的目的就是控制输出结果集大小,将结果尽快的返回。在上面的分页查询语句中,这种考虑主要体现在WHERE ROWNUM <= 40这句上。

    选择第21到40条记录存在两种方法,一种是上面例子中展示的在查询的第二层通过ROWNUM <= 40来控制最大值,在查询的最外层控制最小值。而另一种方式是去掉查询第二层的WHERE ROWNUM <= 40语句,在查询的最外层控制分页的最小值和最大值。

    第二种:

    代码如下:

    select * from (select e.*,rownum r from (select * from emp order by sal desc) e ) e1 where e1.r>21 and e1.r<=40;

    红色部分:按照工资降序排序并查询所有的信息。

    桔色部分:得到红色部分查询的值,并查询出系统的rownum并指定上别名。这一句就比较关键,起了一个过渡的作用,首先要算出rownum来对红色部分指定上序号,也可以为蓝色外面部分用到这个变量。指定上查询的开始记录数和结束记录的条件。

    蓝色部分:指定记录从第几条开始到第几条结束,取出棕色部门的值来作为查询条件的变量

    总结:绝大多数的情况下,第一个查询的效率比第二个高得多。

    Sql Server:

    java程序员的面试经历

    分页方案一:(利用Not In和SELECT TOP分页)

    语句形式 代码如下:

    select top 10 * from testtable where (id not in(select top 20 id from testtable order by id)) order by id select top 页大小 * from testtable where (id not in (select top 页大小*页数 id from 表 order by id)) order by id

    分页方案二:(利用ID大于多少和SELECT TOP分页)

    语句形式 代码如下:

    SELECT TOP 10 *

    FROM TestTable

    WHERE (ID >

    (SELECT MAX(id)

    FROM (SELECT TOP 20 id

    FROM TestTable

    ORDER BY id) AS T))

    ORDER BY ID

    -----------------------------------------

    SELECT TOP 页大小 *

    FROM TestTable

    WHERE (ID >

    (SELECT MAX(id)

    FROM (SELECT TOP 页大小*页数 id

    FROM 表

    ORDER BY id) AS T))

    ORDER BY ID

    分页方案三:(利用SQL的游标存储过程分页)

    代码如下:

    create procedure XiaoZhengGe

    @sqlstr nvarchar(4000), --查询字符串

    @currentpage int, --第N页

    @pagesize int --每页行数

    as

    set nocount on

    declare @P1 int, --P1是游标的id

    @rowcount int

    exec sp_cursoropen @P1 output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount output select ceiling(1.0*@rowcount/@pagesize) as 总页数--,@rowcount as 总行数,@currentpage as 当前页

    set @currentpage=(@currentpage-1)*@pagesize+1

    exec sp_cursorfetch @P1,16,@currentpage,@pagesize

    exec sp_cursorclose @P1

    set nocount off

    其它的方案:如果没有主键,可以用临时表,也可以用方案三做,但是效率会低。

    建议优化的时候,加上主键和索引,查询效率会提高。

    通过SQL 查询分析器,显示比较:结论是:

    分页方案二:(利用ID大于多少和SELECT TOP分页)效率最高,需要拼接SQL语句

    分页方案一:(利用Not In和SELECT TOP分页) 效率次之,需要拼接SQL语句

    分页方案三:(利用SQL的游标存储过程分页) 效率最差,但是最为通用

    在实际情况中,要具体分析。

    8. 静态变量和实例变量的区别?

    在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。

    在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程

    相关热词搜索:程序员 面试 经历 java java程序员面试宝典 java程序员面试简历