Java的Web和基础中常见的技术组合面试题,看看您都get到了没?

一,简述http协议中post和get方法的区别

get 方法:从指定的资源获取数据,get方法将请求参数拼加在url地址后面,参数可见,因此数据可见,相对不是很安全,并且受到url长度限制,所以get方法请求数据长度也有限制,最大2048字符;get方法的参数保存在浏览器历史记录,能被缓存。

post方法:向指定的资源提交要被处理的数据,post请求数据放在请求表单中,参数不可见,相对而言比较安全,请求的长度不受限制,并且post请求参数不会保存在浏览器记录中,不能被缓存。

二、session 和cookie的区别

cookie:cookie数据放在客户端,并且相对不是很安全,别人可以通过分析放在本地的cookie进行cookie欺骗, session会在一定时间保存在服务器上,并且会占用一定内存,所以在考虑减轻服务器性能方面可以考虑用cookie,考虑到安全用session。cookie可以通过设置生命周期决定cookie作用的有效时间。

比如cookie运用场景:判断用户是否登入过网站,方便下次能直接登入;比如购物车,用户在不同页面选择商品,将这些信息存在cookie中,最后从cookie中获取信息。

Session:session是由服务器维持的一片存储空间,作为会话机制,实现方式有cookie和url重写。当用户链接服务器,服务器会为每一个session创建一个id,这个id是唯一的,这个sessionid通过cookie保存在客户端,每次发送请求时,会把sessionid提交到服务器端,根据id提取到对应的session存储空间,从而获取session中的数据,session默认有一定的生命周期。cookie一旦失效 session也就失效。

三、简述servlet与jsp的关系

servlet:运行在服务端的java运用程序,可以生成动态web页面,作用在客户端请求和服务器响应中间层,这样就不用单独为每一个客户端请求创建进程。

jsp 全名 java server pages ,,叫做java服务器页面,是一种动态页面技术,目的是将逻辑从servlet分离出来,使程序开发变得更容易,可以看作是编译后的servlet。

两者的区别:servlet是在java代码加入了htnl代码,修改不方便,适合做流程控制和业务逻辑处理;

jsp是在html中加入java代码,比较适合页面显示

servlet中没有内置对象,jsp中的内置对象通过request ,response 对象得到。

四、jsp内置对象有哪些,有什么作用

request:代表客户端的请求信息,用于接收传送到服务端的数据;

reponse:代表向客户端的响应,将jsp容器处理的对象传到客户端,具有作用域,在jsp页面有效。

session:第一次页面加载就创建了,一种会话跟踪技术,可以保存用户的信息。

application: 生命周期长,服务器已启动产生一个application对象,用于保存信息,所有用户共用一个application对象

out:向浏览器输出信息

pagecontext:获取其他对象

config:获取服务器的配置信息

cookie:是保存在用户硬盘的一段文本,保留了用户登入的信息

exception:处于异常信息

五、简述你理解的java 封装,继承,多态

封装:通过private修饰变量或方法,提供给public的getter和setter方法供外部使用

继承:关键字 extends,将一些共性的东西提取出来,这样简化代码,提高代码复用性

多态:父类的变量指向子类对像,提高代码拓展性,并通过重写父类方法实现了提高代码的灵活性。

六、写出两个常用设计模式伪代码

单例模式:饿汉单例

public class A {

private static A a = new A ();

privtae A (){}

public static A getA(){

return a;

}

}

使用场景:i/o中与数据库的连接,减少资源消耗;

每台计算机有若干个打印机,但只能有一个PrinterSpooler,以避免两个打印作业同时输出到打印机。

工厂模式:

提供一个工程类:

public class Factory{

private Factory (){};

public static Product createProduct (string name){

if (name.equals"A"){ return new ProductA}

}

if (name.equals"B"){ return new ProductB}

}else

}

提供一个接口:

public interface Product{ public void method }

提供两个实现类:

public class ProductA implements Product {

}

public class ProductB implements Product {

}

常用场景:情况一:如果一个对象拥有很多子类,那么创建该对象的子类使用工厂模式是最合适的,不但可以面向接口的编程,为维护以及开发带来方便。 利用工厂模式可以提高代码复用率。

七、hashMap 和hashTable的区别

hashMap: 线程不安全, 可以接收null值,单线程下hashMap的速度要更快

八、hashset 和treeset的区别

两者都有内置的顺序排列,hashset根据hash值进行排序,treeset根据二差树实现的,Treeset中的数据是自动排好序的,可一通过实现compartor方法实现自然排序。

九、arraylist和linkedlist的区别

arraylist : 会根据插入顺序进行排序,是数组结构,通过下标可以方便查询,查询效率高;

linkedlist; 使用链表结构放入数据,方便插入数据

十、== 和equals的区别

比较基本数据类型时,== 和equal 效果一样,对于引用对象的比较,equals 比较的是值,==比较的是内存地址。


Java的Web和基础中常见的技术组合面试题,看看您都get到了没?

相关推荐