初级程序员实战面试宝典(一)

前言:

      此文章是本人对以往知识的一个总结以及面试中有可能或者已问到的一些问题的总结,此非非常基础的知识,阅读此面试题之前请先学习完必备的基础知识。当你看到这篇文章的时候如果你是一个初级程序员应聘者,那么,恭喜你!你的成功率已经提高了百分之五十!果然你发现文章中有错误的地方,欢迎指出!

1,hibernate怎么进行性能优化?

      1.使用抓取策略fetch,使用join减少sql语句。2.恰当使用load延迟加载。3.开启二级缓存。

 

2.什么是二级缓存?

      一级缓存是session级别的缓存,属于事务范畴,无须干预。二级缓存是sessionFactory级别的缓存,属于进程范围的缓存,其策略是针对ID查询的缓存策略,对于条件查询则毫无作用,二级缓存需要配置。很少被修改的不是私有的,共享数据适合放在二级缓存中。

 

3,hibernate查询语句有哪几种?

        HQL,原生sql ,QBC , load延迟加载, get即时加载(在开发过程中用qbc的find方法时遇到一个问题,一个可变参数就是用不了,后来发现是个版本的bug,忘记几点几了)

 

4,hibernate三种状态?

    1.临时状态。2.持久状态。3.游离状态。他们本质就是一个oid和纳入缓存的问题

 

5,数据索引索引有几种?

     自建索引和数据库索引两种,自建索引需要自己维护,数据库索引由数据维护

 

6.springmvc中常用的注解?

    @RequestMapping请求地址 @Controller控制器  @ResponseBody标注在方法上,该方法返回的数据为json数据 @RestController请求体标注在类上,表示该类返回的都是json数据

 

7.Oracle分页,常用函数?

    select*from(select A.*, rownum rn from (select*from students) A where rownum <=5)where rn>=2;Oracle没有limit,通过伪列Ruwnub进行分页;

    常用函数:NVL(expr1,expr2)为空返回2,否则返回1 

         NULLTP(expr1,exper2)相等返回空,否则返回1

         组函数:AVG()求平均值;MAX()求最大值;MIN()求最小值;SUM()求总和;COUNT()求总数

 

8.jQuery的$(document).ready(function(){})和window.onload有何区别

    ①,window.onload必须等到页面所有元素包括图片加载完毕后才能执行,而$(function(){})是Dom结构加载完毕后就执行

    ②,window.onload在整个页面只会执行一个,而$(function(){})可以写多个并且都会执行

    ③,window.onload没有简化写法,$(document).ready(function(){})可以写成$(function(){});

 

9.常用的IO流?

    字节流和字符流。字节流如:InputStream,OutputStream;字符流如:Reader,Writer;

 

 10.PowerDesigner用来干嘛

    PowerDesigner是一个数据库建模工具。

 

11.tomcat怎么改端口号,mysql,oracle,tomact的默认端口号是什么。

    在Servier.xml文件里面改,mysql是3306,oracle是1521,tomcat是8080

 

12.http协议链接的三次握手四次挥手是什么?

    1.客户端首先发起第一次握手,向服务端传数据;

    2.服务端听到后如果表示可以接受数据,则向客户端发起第二次握手;服务端的这次握手也是在询问,你能接受我返回给你的数据吗?;

    3.接着客户端发起第三次握手告诉服务端,是的,我也能接受你返回给我的数据,OK连接建立成功。

    四次挥手:关闭连接需要四次挥手

 

13.struts2核心是什么,怎么构建自己的拦截器栈?

是拦截器,拦截器栈是自定义拦截器加默认拦截器,再把默认拦截器栈改成自定义拦截器栈

 

14.ioc和di是什么,关系是什么

    ioc控制反转(是一种设计思想),di(依赖注入)是对控制反转设计思想的一种具体实现,他们加上AOP就是spring的核心

 

15.AOP是什么

    AOP面向切面编程,将核心业务和横向通用逻辑(事务管理,日志管理,安全管理等等)分为两部分,当我们执行到核心业务逻辑的时候,可以通过AOP在这之前或者之后执行某些操作,对模块的功能做扩充,并且不影响核心业务逻辑的代码,做到充分的松耦合

 

16.jsp9大内置对象?

    request、response、pagecontext、session、application、out、config、page、exception。

 

17.数据库建模的三大范式?

    第一:原子性不可拆分,第二:除主键以外的其他列,必须依赖主键,第三:除主键以外的其他列不存在传递依赖。并且三大范式是层层紧密相连,第三大范式必须满足第一第二大范式,第二范式必须满足第一大范式。

 

18.事务的四大特性是什么?

    1. 原子性(Atomicity),事务是数据库的最小逻辑工作单位,事务中包括的各个操作要么全做,要么全不做。

    2. 一致性(Consistency),事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。

    3. 隔离性(Isolation), 一个事务的执行不能被其他事务干扰。

    4. 持续性(Durability), 一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。

 

19.js常用的方法

数组:split()将一个字符串用指定字符拆分为一个数组

     push()设置值,返回数组的长度

     join()返回字符串,用指定的字符串拼接起来

     sort()里面可以写function函数

字符串:concat()拼接

       indexof()查找指定的字符,没有返回-1

       substring()从指定位置开始截取元素,多个参是截取范围,前面包含后面不包含

       toLowerCase()元素转大写

       toUpperCase()元素转小写

 

20.jquery常用的方法

    click(),remove(),add(),addClass(),val(),get(),获得焦点,失去焦点,

 

21.ajax的原理

    通过浏览器的内置对象实现页面无刷新加载(ie的内置对象activeXObject,非IE xmlhttprequest)提高用户的浏览体验

 

22.自定义多线程的两种方式?

继承Thread类和实现Runnable接口

 

23.java线程池的原理是什么?

线程池原理应该是可以减少线程创建和销毁时间

1,线程池管理器(ThreadPool):用于创建并管理线程池,包括 创建线程池,销毁线程池,添加新任务;

2,工作线程(PoolWorker):线程池中线程,在没有任务时处于等待状态,可以循环的执行任务;

3,任务接口(Task):每个任务必须实现的接口,以供工作线程调度任务的执行,它主要规定了任务的入口,任务执行完后的收尾工作,任务的执行状态等;

4,任务队列(taskQueue):用于存放没有处理的任务,提供一种缓冲机制。

 

24.什么是mvc?

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,是一种设计模式。

 

25.ArrayList和linkList的区别

都是list接口的实现类

ArrayList是以数组形式保存对象,插入删除比较慢,查询直接根据下标比较快

Linklist它将数组存在独立的空间中,插入删除比较快,查询需要全部遍历出来比较慢

 

26.hashSet如何设置值

首先将对象的HashCode与已经存在的对象的HashCode比较,如果不同(肯定为不同的对象)直接塞进去;如果HashCode与已经存在的对象的HashCode相同,会再进行equals()内容比较,如果相同会覆盖

 

27.collection和collections区别

collection是java.util包下面的一个集合框架接口

collections是java.util下面的一个包装类,包含一些集合操作的静态多态方法,服务于Collection框架。

 

28.mybatis如何调用存储过程

 <select id="getUserCount" parameterMap="getUserCountMap" statementType="CALLABLE">
        CALL mybatis.ges_user_count(?,?)
    </select>
    
    <!--
        parameterMap.put("sexid", 0);
        parameterMap.put("usercount", -1);
     -->
    <parameterMap type="java.util.Map" id="getUserCountMap">
        <parameter property="sexid" mode="IN" jdbcType="INTEGER"/>
        <parameter property="usercount" mode="OUT" jdbcType="INTEGER"/>
    </parameterMap>

 

29.spring的核心是什么?

ioc控制反转设计思想. di控制反转(思想的一种实现),aop面向切面编程

 

30.easyui常用组件有哪些?

 Pagination(分页), ProgressBar(进度条),layout(布局东南西北),Accordion(分类),Tabs(选项卡),Button组件。

 

31.面向对象三大基本特征?

封装,继承,多态,抽象

多态:分为编译时多态和运行时多态,前者通过重载实现后者通过方法覆盖实现,即子类重写父类方法

 

32.重载和重写的区别?

重载是发生在一个类中间方法名相同,参数类型,参数个数或者顺序不同不同。

重写是发生在父类和子类之间,方法名相同,参数类型列表相同,返回值类型相同。

 

33.list和set区别?

都是Collection下面的接口

list是有序的,set是无序的

set元素不可重复,list可以

 

34.请求转发和重定向概念和区别?应用场景是什么?

请求转发是发送一条请求,重定向发送两条请求.

请求转发主要用于查询,重定向主要应用于增删改,防止用户重复提交表单对我们数据库造成不必要负担。

 

35.servlet生命周期

1,初始化阶段  调用init()方法

2,响应客户请求阶段,调用service()方法

3,终止阶段,调用destroy()方法

 

36.jsp的本质是什么?

就是一个Servlet,一个.java文件。

 

37.jsp执行流程?

客户端向服务器发送一条请求,请求一个jsp文件,没找到直接返回404(找不到页面),找到则判断是否是第一次或者修改后的第一次访问,如果不是直接执行对应的.class文件,如果是将其编译成Servlet程序,再编译成.class文件执行

 

38.数据库的事务隔离级别?

读未提交,读提交,可重复读,可串行化;(要去详细了解他们,这个非常重要)

 

39.冒泡排序?

int[] arr = {1,5,7,2,3,5,9};

public int[] sort(int[] arr){

    int temp = 0;

    for(int i=0; i<arr.length; i++){

for(int j=i+1; j<arr.length; j++){

            if(arr[i] > arr[j]){

temp = arr[i];

arr[i] = arr[j];

arr[j] = temp;

    }

}

    }

}

 

40.Restful风格的请求?

是spring mvc里面的:以往我们请求方式都会采用get和post(其实还是有PUT和DElETE两种,总过四种), 现在post, delete,get, put各种请求分别对应增,删 ,查, 改

 

41,struts2的原理是什么?

客户短发送一个HttpServletRequest请求,经过一系列的过滤器走到拦截器栈,通过配置文件定位到对应的Action(一个action是一个对象)的对应方法执行操作,action执行完毕后返回一个result字符串,此时再按相反的顺序通过拦截器栈,根据struts.xml配置找到与之对应的result标签

 

42 .class文件可以直接执行吗?

不行,要通过JVM执行。

 

43 ajax如何变成同步请求?

将async:false     // false 时为同步,默认为true异步

 

44 wait和sleep有何区别?

wait会释放线程锁,sleep不会

 

45notify和notifyall区别?

notyfy是随机唤醒一个,notyfyAll是唤醒所有

 

46.webservice?

用过:是基于socket协议,就是http加xml,wsdl有契约优先和编码优先,契约优先是先设计wsdl文件,编码优先就是先编码webservice,然后由被调用的一方提供wsdl文件(如天气预报接口;wsdl是xml文档)

 

47.值栈和栈?

这是struts2的概念,每一个action都对应着一个actionContext,struts将actionContext作为Ognl(表达式语言)的上下文,actionContext将ValueStack作为上下文的根对象,么ValueStack将当前用户所请求的Action压入栈顶

 

48.hashSet如何校验两个值是否相同?

先比较两个值的hashCode码是否相同,如果不同值(元素)肯定也不同,否则再比较值(元素)

 

49.jdk1.5,1.6,1.7,1.8增加了哪些特性?

1.5增加了泛型,包装类型,自动拆箱装箱,for增强

1.6增加了对脚本语言的支持如:javascript,使用JAXB2来实现对象与XML之间的映射

1.7增加了switch中可以使用字符串(以前只有这四种:int,short,char,bytr),在try catch异常扑捉中,一个catch可以写多个异常类型,用"|"隔开

1.8增加了lambda表达式,函数式接口

 

50.触发器

没用过简单了解过,触发器是由一个事件来启动运行,当某个事件发生时自动的隐式运行,可以在dml(数据操作语言)语句触发,可以在操作前或后进行触发,当执行某个操作自动触发另一个操作

 

51,数据库分为几种语言(简单讲下每种是分别做什么的)

DML(Data Manipulation Language)数据库操作语言,对数据库中表的增,删,查,改操作,比如insert, delete, select ,update

DDL(Data Definition Language)数据库定义语言,对表对象或者索引对象的操作,比如create table创建表,alter table修改表,drop table删除表,create index创建索引,drop index删除索引

DCL(Data Control Language)数据库控制语言,对数据库的访问控制,比如grant授权,revoke撤销权限,commit事务提交,rollback事务回滚

 

52,常见的数据库对象有哪几种?

表,视图(从表中抽出的逻辑上相关的数据集合),序列,索引,同义词(别名)

 

53.hibernate原理是什么?

通过hibernate的核心配置文件hibernate.cfg.xml建立表与表之间合理的映射关系,实例化sessionFactory创建session对象,通过session对象来进行数据库的操作。

 

54.springmvc和struts2的区别?

springmvc是方法级别的请求响应,spring mvc的入口是servlet

struts是类级别的请求响应,struts2是filter过滤器

SpringMVC开发效率和性能高于Struts2,可以说是100%零配置

 

55,spring中bean的作用范围(作用域)?

Singleton作用域,request作用域,session作用域,还有好几种每种的细节不一 一解释了,自己查资料

 

 

56,struts2要执行一个Action需要做些什么(应该问的是怎么配置action)?

题目还或许问的是执行action之前需要执行写什么?      答:过滤器和拦截器

首先建一个存放action的xml文件(比如sturts-demo.xml),使用<package>标签把一个个action封装,在核心配置文件struts.xml 中用<include>标签中的file属性,引入action配置的文件的全文件名

 

57,怎么用java代码生成一个不重复的32位的什么鬼id(应该是uuid)?

Java.util下面有个UUID类,用UUID类中的randomUUID()方法,随机生成即可

 

58,maven用来做什么的

Maven是代码的管理工具,编译,发布,部署等,有一个pom.xml的文件可以自动管理所需jar包的版本

 

 59,UML是什么?

统一建模语言or标准建模语言

 

 

60,搭建开发环境,用spring+spring mvc+mybatis搭建(下面直接百度贴来的)?

1、首先是Spring和Mybatis整合,具体步骤为jdbc.properties(数据库连接信息)->mybatis.config(MyBatis的别名信息)->mapper(“SQL语句”和“DAO”之间的映射关系)->Spring-MyBatis(将映射关系注入到DAO层)

2、DAO层撘完搭Service层,这里采用“注解”的方式,直接在ServiceImpl中注解@Service,里面的属性采用@Autowired,并在Spring-MyBatis.xml里面添加<context:component-scan base-package="com.demo.ServiceImpl"/>就能够自动注入了,Service层搭建成之后,进行单元测试,没问题了再继续

3、搭建Controller层,主要注意:web.xml要读取Spring-MyBatis.xml。在用Spring-mvc.xml构建Controller的bean时,也采用注解方式,主要是使用@Controller和@Autowired,这种方式要求把前面的DAO层配置文件中的<context:component-scan base-package="com.demo.ServiceImpl"/>删掉,并在Spring-mvc.xml中添加<context:component-scan base-package="com.demo"/>,而且我们 采用@RequestMapping驱动Controller,在Spring-mvc.xml中添加<mvc:annotation-driven />,至此,工程搭建完毕

 

 

 

61,实现同步的有哪几种?

分别是synchronized,wait与notify

 

62,hibernate有那些主键策略(其实还有几种)?

assigned由程序生成主键值,主键的生成值完全由用户决定,与底层数据库无关。

foreign使用外部表的字段作为主键。

increment自动增长,会从数据库中查询主键的最大值,然后+1,再插入

uuid字符串,全球唯一标识符

identityIdentity 当时根据底层数据库,来支持自动增长,不同的数据库用不同的主键

增长方式。要求数据库支持Identity(SQL SERVER 和MYSQL)。

 

63,hibernate主键xml配置怎么配置?

每种主键策略配置都稍有不同,不过通用都是用<id>标签,name属性type属性,name指定主键字段名,type指定主键数据类型,然后<id>标签内部还需要配置<generator>标签,使用calss属性来指定主键策略

 

64,spring的注入方式有哪几种?

对象依赖注入,构造方法的注入,还有其他数据的注入包括:一般数据的注入,map注入,list注入,set注入

 

65,Mybatis怎么返回主键?

用到两个属性useGeneratedKeys="true" keyProperty="id"

 

 

 

66.Srping中bean的作用域不配置的话,默认是什么?

Applaiction全局的

 

67.关于协议这一块tcp,http,https,socket,soap,wsdl大家都要去了解一下,做什么用的。

68.Java基本数据类型

byte:8位,最大存储数据量是255,存放的数据范围是-128~127之间。

short:16位,最大数据存储量是65536,数据范围是-32768~32767之间。

int:32位,最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1。

long:64位,最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1。

float:32位,数据范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上f或F。

double:64位,数据范围在4.9e-324~1.8e308,赋值时可以加d或D也可以不加。

boolean:只有true和false两个取值。

char:16位,存储Unicode码,用单引号赋值。

 

69.写一个方法实现字符串的反转

String a="abcde";

StringBuilder b = new StringBuilder(a);

System.out.print(b.reverse().toString());

 

70.如何将数值型字符转换成数字

int num = Integer.parseInt(str);

Double.parseDouble(a);

如何将数字转换成字符

String.valueOf(i);

Integer.toString(i);

如何取小数点后两位并四舍五入

 

71.怎么取年月日时分秒

 

72.数组和集合的区别

数组的长度是限定的,而且数组只能存储一种基本类型的数据元素,而集合的长度是可变的,存储的数据类型也可以不同

 

73.如何判断一个文件或者目录是否存在

file .exists()  && !file .isDirectory()

 

74.关于goto

其实goto这个词是C语言中的,goto语句通常与条件语句配合使用,可用来实现条件转移, 构成循环,跳出循环体等功能。而在结构化程序语言中一般不主张使用goto语句, 以免造成程序流程的混乱,使理解和调试程序都产生困难。但是在java语言中,goto这个词只是作为了保留字,还没有使用。那是因为java语言讲究简单,方便。

 

75.笔试时经常会出现的一个问题,float型float f=3.4是否正确 
答案:不正确。 
原因:精度不准确,应该用强制类型转换,如下所示:float f=(float)3.4 或float f = 3.4f 
在java里面,没小数点的默认是int,有小数点的默认是 double; 
编译器可以自动向上转型,如int 转成 long 系统自动转换没有问题,因为后者精度更高 
double 转成 float 就不能自动做了,所以后面的加上个 f;

 

76.Error和Exception的区别

Error(错误)是系统中的错误,程序员是不能改变的和处理的,是在程序编译时出现的错误,只能通过修改程序才能修正。一般是指与虚拟机相关的问题,如系统崩溃,虚拟机错误,内存空间不足,方法调用栈溢等。对于这类错误的导致的应用程序中断,仅靠程序本身无法恢复和和预防,遇到这样的错误,建议让程序终止。

Exception(异常)表示程序可以处理的异常,可以捕获且可能恢复。遇到这类异常,应该尽可能处理异常,使程序恢复运行,而不应该随意终止异常。

 

77.会什么算法

冒泡,选择排序,递归,二叉树,链表

http://www.cnblogs.com/yolandaBlog/p/9188149.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值