面试问题1-5

1.用java写一个折半查找
答:折半查找即二分查找,在有序数组中查找某一特定元素的一种算法.
原理:是从数组的中间元素开始,如果中间元素正好是要查找的元素,则
搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素
的那一半中查找,而且跟开始一样从中间元素开始比较,如果在某一步骤,数组已经为空,则表示找不到指定元素.
(有序数组中查找一个指定元素,每一次从最中间元素开始查找,如果中间元素大于或是小于指定元素,那么就从数组中相应部分继续查找,以此类推)
程序代码:
public static int binarySearch(int[] arr,int element){
//定义数组的起始索引
int start=0;

//定义数组的末尾索引
int end=arr.length-1;
//循环比较
while(start<=end){
//定义中间元素
int middle=(start+end)/2;
//三种情况
if(element==arr[middle]){
return middle;
}else if(element<arr[middle]){
end=middle-1;
}else if(element>arr[middle]){
start=middle+1;
}
}
return -1;

}
----------------------------------------------------------------------------
2.简述一下你了解的设计模式
答:设计模式就是一种套路(一套被反复使用的代码设计经验的总结),好处是为了重用代码,使代码更加清晰简洁,解耦和,安全可靠,是前人编程经验的总结,安全可靠,代码更具美感,设计模式提供了某种情景下解决问题的最佳方案,java共有23中设计模式:包括抽象工厂模式,工厂方法模式,单例模式,适配器模式,装饰模式,代理模式,模板方法模式等
工厂模式:工厂类可以根据条件生成不同的子类实例,这些子类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作.当得到子类的实例后,开发人员可以调用父类中的方法,而不必考虑到底返回的是哪个子类的实例.
代理模式:给一个对象提供一个代理对象,并由代理对象控制源对象的引用.可以再调用源对象之前之后加入想要的操作.


适配器模式:把一个类的接口换成客户端所期待的另一种接口,从而使原本银接口不匹配而无法在一起使用的类能够一起工作


模板方法模式:提供一个抽象类,将部分逻辑以具体方法或构造器的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑,不同的子类可以用不同的方式实现这些抽象方法,从而实现不同的业务逻辑(常用于框架中)
-------------------------------------------------------------------------
3.转发和重定向的区别
转发是服务器直接访问目标资源,再把读取的资源发给浏览器,地址栏不变,重定向是服务器发送一个状态码,浏览器自己去访问目标资源,地址栏要变,转发只能访问服务器内部资源,重定向可以访问外部资源,转发可以访问被服务器保护的资源,重定向不能,在满足业务需求的情况下,优先使用转发,因为效率高
-------------------------------------------------------------------------
4.JSP九大内置对象以及作用
request:封装客户端的请求,包含各种来自客户端的参数
response:封装服务器对浏览器的相应
pageContext:JSP的上下文,通过该对象可以获取其他对象
session:封装用户会话的对象:
application:封装服务器运行环境的对象
out:输出服务器响应的输出流对象
config:web应用的配置对象
page:jsp页面本身相当于this
exception:封装页面抛出异常的对象
-------------------------------------------------------------------------
5.get和post区别?
get用来从服务器获得数据,post用来提交数据
get将表单的数据附在URL后面,post将表单数据封装到请求体中,安全性高,没有数据大小限制







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值