1.7面试
上午的话小型公司就写个面试题,跟那个hr聊了晓得她不知道技术之后疯狂跟她谈技术,看到她脸色变了我才停下,哇草面试题一堆都不会在小会议室里百度她貌似发现了,不过也不重要。啧。这尼玛这个公司ssh的项目,boss专门是做开发的,神奇。
ajax是什么?如何创建一个ajax?
答:一种创建交互式网页应用的网页开发技术。
step1. 创建XMLHttpRequest对象,也就是创建一个异步调用对象;
step2. 创建一个新的HTTP请求,并指定改HTTP请求的方法、URL以及验证信息;
step3. 设置响应HTTP状态变化的函数;
step4. 发送HTTP请求;
step5. 获取异步调用返回的数据;
step6. 使用javascript和DOM实现局部刷新;1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32<script>
var xmlhttp;
function createXMLHttpRequest(){
xmlhttp=null;
if (window.XMLHttpRequest){
xmlhttp=new xmlHttpRequest(); //Netscape浏览器中的创建方式
}else if(window.ActiveXObject){
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");//IE浏览器的创建方式
}
//异步调用服务器段数据
if(xmlhttp!=null){
xmlhttp.open("GET/POST",url,true); //创建HTTP请求
xmlhttp.onreadystatechange=httpStateChange;//设置HTTP请求状态变化的函数
xmlhttp.send(null); //发送请求
}else{
alert("不支持XHR")
}
}
//响应HTTP请求状态变化的函数
function httpStateChange(){//判断异步调用是否完成
if(xmlhttp.readyState==4){//readyState==4表示后台处理完成了
if(xmlhttp.status==200||(xmlhttp.status==0){//状态码为0是本地响应成果,200表示处理的结果是ok的
//判断异步调用是否成功,如果成功开始局部更新数据
//code...
}else{
alert("出错状态码:"+xmlhttp.status+"出错信息:"+xmlhttp.statusText);
}
}
}
</script>选择的记一下步骤,这他妈还是主要记这个
1
$.ajax({url,data,type,error(),success()});
还有load,post,get方法,不一一题,直接写原生态的ajax这谁顶得住。
struts2常用标签
if-eles if-else 、iterator、date、debug、property struts有使用过这个标签库基本用一次就没继续想了,struts2我学的很烂.request的常用方法
getAttribute、setAttribute、getParameter。这三个是真正用的很多的。附加题java闭包
java闭包ssh项目的工作流程
jsp—>struts2接收请求—》struts2的action调用业务逻辑,业务逻辑调用业务组件—>使spring注入ioc,aop—>业务组件根据hibernate映射关系去查询数据库,struts2根据结果返回页面
就是通过jsp页面的url点击产生请求,struts2接受请求,运行具体方法,spring注入ioc、aop,struts2的执行代码中,调用hibernate的方法,hibernate根据映射关系查询数据库,struts2接受数据返回jsp页面;ssm项目的工作流程
jsp —》dispacherServlvet—查找》handerMapping—》找到controller的请求–》
controller 调用业务逻辑—》业务逻辑处理后返回modelandview
dispacherServlet-查询视图解析器–》找到modelandview对应到视图返回到页面通过jsp页面的url点击产生请求,dispacherServler(分发器)接受请求,查询HanderMapping,找到处理请求的controller,执行controller的方法代码,调用service层的具体业务逻辑(代码),service层调用dao层mapper文件的各种sql语句映射,返回数据到modelandview,并将数据展示到modelandview指定的视图。
下午是华为总部某附属公司的一个面试,那个公司好像是搭建不久,面我的是一个四十多的程序员.
说一说你项目里索引失效的情况
like查询是以%开头(以%结尾没有事),如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引
Springmvc的controller是属于单例还是多例,以及controller是否能有局部变量
[这里就有很好的解释](https://blog.csdn.net/qq_27026603/article/details/67953879)
总的来说,可以单例或者多例,单例推荐使用更加安全,
如果要定义局部变量,那么需要给controller添加注解@Scope(“prototype”)改为多例。
maven里的profile有什么用
答:profile文件是maven用于支持项目更换不同环境。profile学习项目里有用到多线程吗
ps:之前被问到过,这次我用上次找的答案,他听到回答后跳过了。
答:我这种javaweb项目基本没用到多线程,而且有多线程的操作一般都已经被开发框架实现了,一般涉及网络应用才会有多线程,但我只是指定模块进行开发.讲一讲spring aop具体如何使用
先看下aop设计
- 每个 Bean 都会被 JDK 或者 Cglib 代理。取决于是否有接口。
- 每个 Bean 会有多个“方法拦截器”。注意:拦截器分为两层,外层由 Spring 内核控制流程,内层拦截器是用户设置,也就是 AOP。
- 当代理方法被调用时,先经过外层拦截器,外层拦截器根据方法的各种信息判断该方法应该执行哪些“内层拦截器”。内层拦截器的设计就是职责连的设计。
aop的问题基本使用这两点去扯
第一:代理的创建;
创建代理工厂时,默认会在拦截器数组尾部再增加一个默认拦截器 —— 用于最终的调用目标方法。 当调用 getProxy 方法的时候,会根据接口数量大余 0 条件返回一个代理对象(JDK or Cglib)。 注意:创建代理对象时,同时会创建一个外层拦截器,这个拦截器就是 Spring 内核的拦截器。用于控制整个 AOP 的流程。
第二:代理的调用。
当对代理对象进行调用时,就会触发外层拦截器。
外层拦截器根据代理配置信息,创建内层拦截器链。创建的过程中,会根据表达式判断当前拦截是否匹配这个拦截器。而这个拦截器链设计模式就是职责链模式。
当整个链条执行到最后时,就会触发创建代理时那个尾部的默认拦截器,从而调用目标方法。最后返回。啊啊啊不行不行,实在抽象,我现在就只能理解是aop是spring的一个组件,spring的每个bean都有方法拦截器,一层属于spring内部控制,一层属于aop我们自己配置的。当方法拦截器调用时触发外层spring控制的拦截器,然后会对这个调用是否匹配内层配置的拦截器。
- mysql的问的挺多
大概就是这样,这个老男人真牛皮
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!