web面试题
Posted litao201403
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了web面试题相关的知识,希望对你有一定的参考价值。
- 简单的讲一下夸平台原理
1.1由于各系统支持的不同的指令,就会让我们的程序在不同的操作系统上要执行不同程序的代码。java开发为了避免这种差异。提供了统一的接口,我们只需要在不同的系统上提供不同的虚拟机即可。并不是java是跨平台的语言,而是不同平台上装有不同的虚拟机。所以说java是与平台无关性的语言
- 搭建一个java开发环境步骤
- 适用于我们开发环境的jdk
- 对应的开发环境jre
- 还需要tomcat
三.讲一下java的数据类型
byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0
short:短整型,在内存中占16位,即2个字节,取值范围-32768~32717,默认值0
int:整型,用于存储整数,在内在中占32位,即4个字节,取值范围-2147483648~2147483647,默认值0
long:长整型,在内存中占64位,即8个字节-2^63~2^63-1,默认值0L
float:浮点型,在内存中占32位,即4个字节,用于存储带小数点的数字(与double的区别在于float类型有效小数点只有6~7位),默认值0
double:双精度浮点型,用于存储带有小数点的数字,在内存中占64位,即8个字节,默认值0
char:字符型,用于存储单个字符,占16位,即2个字节,取值范围0~65535,默认值为空
boolean:布尔类型,占1个字节,用于判断真或假(仅有两个值,即true、false),默认值false
四.面向对象的特征有哪些方面
有四种基本特征 封装、抽象、继承、多态
封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
好处:便于使用,提高重用性。提高安全性
抽象:
抽象就是找出一些事物的相似和共性之处,然后将这些事物归为一个类,这个类只考虑这些事物的相似和共性之处。
好处::抽象类和抽象方法必须用abstract关键字修饰
:抽象类不一定有抽象方法,有抽象方法的类一定是抽象或者是接口
:抽象类不能实例化那么(如果可以实例化,那就可以调用类中的抽象方法,没有具体的方法实现,没有意义)
多态:同一类型的引用指向不同的对象时,有不同的实现
好处:提高了代码的维护性,提高了代码的扩展性
继承:子类的对象拥有父类的全部属性与方法
好处:实现了代码的复用
- 有了基本数据类型,为什么还需要包装类型
基本类型:java中提供的8种基本类型
包装类型: 每一个基本类型都会一一对应一个包装类型。 boolean----->Boolean int------>Integer
装箱和拆箱:
装箱:把基本的数据类型转化为包装类型;
自动装箱:自动装箱实际上在编译的时候会调用Integer.valueof方法来装箱
拆箱:就是把包装类型转化为基本数据类型
自动拆箱:实际上会在编译时调用intValue
值缓存:
- 说一下“==”和equals方法究竟有什么区别
==用来判断两个变量之间的值是否相等。变量就可以分为基本数据类型,引用类型。如果是基本类型的变量比较值而引用类型比较的引用的内存的地址的首地址
equals用来比较两个对象是否一样。判断两个对象的某些特征是否一样,实际上就是调用对象的equals方法进行比较
- 讲一下String和stringBuilder stringBuff的区别
String是内容不可变的字符串。String的底层使用了一个不可变的字符数组(final)
而stringBuilder stringBuff是内容可以改变的字符串,他们的底层使用了可变的字符数据(没有被final修饰)
拼接字符串不能使用string进行,要使用stringBuilder stringBuff
stringBuilder 是线程不安全的,效率比较高
stringBuff 线程安全的,效率较低
八:讲一下java中的集合
Java中的集合分为value, key value(collection Map)两种
存储的方式分为list和set
list是有序的,可以重复
Set是无序的,不可以重复。
- Arraylist和linkdList的区别,和使用场景
Arraylist:底层使用的数组。查询快,删除和查询比较慢
linkdList:底层使用的链表(不需要内存是连续的,在当前元素中存放下一个或上一个元素的地址。查询时需要从头开始找,插入式不需要移动),而插入和删除效率高,查询比较慢。
Arraylist:使用查询比较多,删除和插入比较少
linkdList:使用删除和插入比较多,使用查询少
十.讲一下HashMap和HashTable的区别
他们都是键值对的形式存在
HaspMap可以把键或值为null 而HashTable不可以
HaspMap是线程不安全的,效率较高 HaspTable是线程安全的,效率较低
我想用线程安全但是又想效率高:
通过整个Map分为n个segment,可以提供相同的线程安全
- 实现一个拷贝文件的工具类使用字节类还是字符流
我们拷贝的文件不确定只包含字符流,有可能有字节流(图片、声音)为考虑通用性,要使用字节流
- 讲一下线程的几种创建方式
- 通过继承Thread类实现一个线程
继承扩展性不强,java总只支持单继承,如果一个类继承Thread就不能继承其他的类了
- 通过实现Runnable实现一个线程
怎么启动:
启动start方法 ,启动之后执行run方法
怎么区分线程?在一个线程中有很多线程,每个线程都会打印日志,我想区分是哪里打印怎么办?
Thread thread=new Thread;
Thread.setName(“设置一个线程名称”)
- 有没有使用过线程并发库
简单了解过?
Java5增加了Douglea.提供了线程的运行,线程池的创建,线程生命周期的控制。
Java通过Execuors提供四个静态方法的线程池:
线程池的作用:
- 限定线程的个数,不会导致由于线程过多导致系统运行缓慢或崩溃
- 线程池不需要每次都去创建或销毁,节约了资源
- 线程池不需要每次都去创建。响应时间更快
十四:讲一下什么是设计模式?常用的设计模式有哪些
设计模式就是经过前人无数次的实践总结的。
单例模式
饱汉模式
饱汉模式是一出来就创建
饥汉模式
需要时候才创建
工厂模式:spring IOC
对象的创建交给一个工厂去创建
代理模式 :spring AOP就是使用的动态代理
包装模式 :
Java web部分
- 讲一下http get 和post请求的区别
都是http的请求方式
①Get请求提交的数据会在地址栏显示出来,而post不会在地址栏显示
②传输数据的大小
Get请求不会由于浏览器对地址长度的限制而导致传输的数据有限制。而post不会因为地址的长度限制而导致传输数据的限制
③安全性post的安全性要比get的安全性高
由于数据会在地址中呈现,所以通过历史纪录可以找到相关信息
- 说一下你对servlet的理解,或者servlet是什么
是一种java编写的服务器端程序,而这些servlet都要实现这个接口,主要功能是在于交互的浏览器和修改数据生成web内容
httpServlet重写了doGet和doPost方法或者重写service方法完成对get和post请求的响应
- 简单那说一下servlet的生命周期
Servlet创建:当第一次访问的时候被创建,而且只执行一次,只要访问就执行
什么时候销毁:当服务停止时被销毁(没有办法手动销毁只要访问了就一直存在tomcat里面)
- jsp的内置对象?作用分别是什么:分别有什么用法
Request 用户端请求,
Response 网页传回用户的回应
pageContext 网页的属性时这里管理
Session 会话
Appliaction 正在执行的内容
Out 输出
Config
Page
Excption
四大作用域
PageContext,Request ,Response ,Appliaction 通过四大作用域取值
- session和cookie的区别,你在项目中哪里使用
Sessiom和cookie都是会话,cookie通过客户端记录用户信息,session通过服务器端记录用户信息,但是session的实现依赖于cookie,
Cookie和session的区别:
1. cookie数据存放在浏览器上,seeion数据存在服务器上
2. cookie很不安全
3.session会在一定时间内保存在服务器上。访问增多时,会比较占用你的服务器性能。
建议:把登陆信息放在session里面
其他信息放在cookie里面
- MVC的各个部分都有哪些技术来实现
数据库的分类
1.数据库的分类和常用的数据库
关系型数据库:
节构严谨,符合关系理论。可以存储结构化数据。支持比较复杂的的数据关联查询,支持事务,可以保障数据安全。支持sql语句做操作
非关系型数据库:
结构简单、键值对的方式存在。而且大多数都是直接存在内存中,具有很高的性能;大多数都是开源的,可以免费使用。
2.事务四个基本特性ACID
事务就是要么都做要么都不做。买东西要从A用户先B用户转账,A用户扣钱成功,B账号加钱成功。
事务必须满足四大特征:
原子性:表示事务内操作不可分割,要么都成功,要么都失败
一致性:要么都成功,要么都失败,后面的失败要对前面的操作进行回滚
隔离性:一个事务开始后,不能其他事务干扰
持久性:表示事务开始了就不能停止
4.mysql数据库的默认最大连接数
为什么要有最大连接数?
特定服务器上的数据库只能支持一定数目同时连接,这时候我们要设置最多多少连接。
最大连接数100
以上是关于web面试题的主要内容,如果未能解决你的问题,请参考以下文章