Ajax面试常见问题及答案
1、什么是Ajax和JSON,它们的优缺点
Ajax是全称是asynchronous JavaScript andXML,即异步JavaScript和xml,用于在Web页面中实现异步数据交互,实现页面局部刷新
优点:可以实现异步通信效果,页面局部刷新,带来更好的用户体验
JSON是一种轻量级的数据交换格式,看着像对象,本质是字符串
优点:轻量级、易于人的阅读和编写,便于js解析,支持复合数据类型
2、ajax的交互流程有哪几步?
1)创建ajax对象
xhr = new XMLHttpRequest
2)规定请求地址
xhr.open(method,url,async)
3)等待服务器相应
xhr.onload
4)向服务器发送请求
xhr.send()
3、AJAX应用和传统Web应用有什么不同
在传统的Js中,如果想发送客户端信息到服务器,需要建立一个HTML表单然后GET或者POST数据到服务器端
用户需要点击提交按钮来发送数据信息,然后等待服务器响应请求,页面重新加载
使用AJAX技术,就可以使Javascript通过XMLHttpRequest对象直接与服务器进行交互
4、XMLHttpRequest对象在IE和Firefox中创建方式有没有不同?
IE中通过new ActiveXObject()得到,Firefox中通过newXMLHttpRequest()得到
使用jquery封装好的ajax,会避免这些问题
扩展:
IE内核为:trident;
Chrome内核为:blink(基于webkit,谷歌与Opera software共同开发);
Firefox内核为:gecko;
Safari内核为:webkit内核;
Opera内核为:blink (跟Chrome一样),之前为presto;
5、ajax如何解决浏览器缓存问题,有几种解决方案?
方案1)在ajax发送请求前加上 anyAjaxObj.setRequestHeader(“If-Modified-Since”,“0”)
方案2)在ajax发送请求前加上 anyAjaxObj.setRequestHeader(“Cache-Control”,“no-cache”)
方案3)在URL后面加上一个随机数: “fresh=” + Math.random();
方案4)在URL后面加上时间戳:“nowtime=” + new Date().getTime()
方案5)在jq ajax下,使用 $.ajaxSetup({cache:false}) 这样就不会保存缓存记录
6、简述ajax的优缺点
优点:
1)无刷新更新数据(在不刷新整个页面的情况下维持与服务器通信)
2)异步与服务器通信(使用异步的方式与服务器通信,不打断用户的操作)
3)前端和后端负载均衡(将一些后端的工作交给前端,减少服务器与宽度的负担)
4)界面和应用相分离(ajax将界面和应用分离也就是数据与呈现相分离)
缺点:
1)ajax不支持浏览器back按钮
2)安全问题 Aajax暴露了与服务器交互的细节
3)对搜索引擎的支持比较弱
4)破坏了Back与History后退按钮的正常行为等浏览器机制
7、阐述一下异步加载JS的几种方案(异步加载:浏览器在下载执行js的同时,还会继续进行后续页面的处理)
方案1)异步加载的方案: 动态插入 script 标签
方案2)通过 ajax 去获取 js 代码,然后通过 eval 执行
方案3)script 标签上添加 defer 或者 async 属性
方案4)创建并插入 iframe,让它异步执行 js
8、json字符串与对象如何相互转换
把JSON格式转成对象:JSON.parse()
把对象转成标准json:JSON.stringify()
使用eval能够把字符串尽量转成js运行的代码 eval(’(’ + jsonstr + ‘)’)
eval是不安全的(可能会注入不必要的东西),通过new Function(’’,‘return’+json)();可以解决该问题
9、介绍一下XMLHttpRequest对象,他有哪些常用方法和属性
XMLHttpRequest是ajax的核心,通过XMLHttpRequest对象,Web开发人员可以在页面加载以后进行页面的局部更新
常用的方法:
open(get/post,url,是否异步)创建http请求
send()发送请求给服务器
setRequestHeader()设置头信息(使用post才会用到,get并不需要调用该方法)
常用的属性:
onreadystatechange 用于监听ajax的工作状态(readyState变化时会调用此方法)
readyState 用来存放XMLHttpRequest的状态
status 服务器返回的状态码
responseText 服务器返回的文本内容
10、说下readyState属性是干嘛的,都有哪几个状态
readyState属性用来存放XMLHttpRequest的状态,监听从0-4发生不同的变化
0:请求未初始化(此时还没有调用open)
1:服务器连接已建立,已经发送请求开始监听
2:请求已接收,已经收到服务器返回的内容
3:请求处理中,解析服务器响应内容
4:请求已完成,且响应就绪
11、jquery ajax怎么实现,你认为他有什么不足之处
$.ajax({
url:发送请求的地址,
data:数据的拼接,//发送到服务器的数据
type:‘get’,//请求方式,默认get请求
dataType:‘json’,//服务器返回的数据类型
async:true,//是否异步,默认true
cache:false,//设置为 false 将不会从浏览器缓存中加载请求信息
success:function(){},//请求成功后的回调函数
error: function(){}//请求失败时调用此函数
})
不足之处:
(1)针对MVC的编程,不符合现在前端MVVM的浪潮
(2)基于原生的XHR开发,XHR本身的架构不清晰,已经有了fetch的替代方案
12、说一下同步和异步的区别
同步会阻塞,异步不会阻塞
同步:程序运行从上而下,浏览器必须把这个任务执行完毕,才能继续执行下一个任务
异步:程序运行从上而下,浏览器任务没有执行完,但是可以继续执行下一行代码
13、解释一下JavaScript的同源策略
同源策略是客户端脚本的安全度量标准,为了防止某个文档或脚本从多个不同源装载
同源策略是一种安全协议,指一段脚本只能读取来自同一来源的窗口和文档的属性
所谓同源就是同域名、同协议、同端口,只有同源的地址才能相互通过ajax方式请求
14、如何解决跨域问题?
跨域的概念:协议、域名、端口都相同才同域,否则都是跨域
解决跨域问题:
1)使用JSONP(json+padding)把数据内填充起来
2)CORS方式(跨域资源共享),在后端上配置可跨域
3)服务器代理,通过服务器的文件能访问第三方资源
15、解释jsonp的原理
ajax请求受同源策略影响,不允许进行跨域请求,而script标签src属性中的链接却可以访问跨域的js脚本,利用这个特性,服务端不再返回JSON格式的数据,而是返回一段调用某个函数的js代码,在src中进行了调用,这样实现了跨域。
17、请问jsonp是不是ajax中实现跨域访问的技术
jsonp不是AJAX中实现跨域访问的技术
jsonp没有使用XMLHttpRequest对象
jsonp只是一种跨域的协议
jsonp只支持Get方式
Ajax面试常见问题及答案相关推荐
- html手机端适配怎么调试,html5面试常见问题及答案:移动端布局与适配篇
原标题:html5面试常见问题及答案:移动端布局与适配篇 1. 移动布局自适应不同屏幕的几种方式 (1)响应式布局 (2)100%布局(弹性布局) (3)等比缩放布局(rem) 2. iscroll安 ...
- 英文面试常见问题和答案
英文面试常见问题和答案 2.2.1 关于工作(About Job) 实际工作中,员工常常需要不断学习和勇于承担责任,求职者如果能表现出这种素质,会给应聘方留下良好的印象. 面试例题1:What ran ...
- ios开发面试常见问题及答案
1.写一个NSString类的实现 + (id)initWithCString:(c*****t char *)nullTerminatedCString encoding:(NSStringEnco ...
- 互联网运营面试题_网站运营面试常见问题和答案
1. 请你自我介绍一下你自己? 您好,我是个有责任心的人,很多人问我如何才能做好运营,除了态度和责任心,这取决于你会在这个工作上花多少时间.运营,其实远远没有很多人想象的那么简单,而且现在真正重视运营 ...
- 软件测试面试常见问题及答案(发散思维、接口、性能、概念、)
目录 一.思维发散 二.软件工程 三.测试概念和模型 四.测试计划与工具 五.测试用例设计 六.接口测试 七.性能测试 一.思维发散 1. 一个球,一把尺子长度是球直径的2/3,怎样测出半径? 2. ...
- 操作系统考研复试、工作面试常见问题及答案
文章目录 1.进程与线程的关系以及区别? 2.进程的常见状态?以及各种状态之间的转换条件? 3.进程的调度算法有哪些? 4.非抢占式调度与抢占式调度? 5.什么是死锁?产生死锁的条件?如何避免死锁? ...
- python数据分析面试常见问题及答案_十道 Python 面试问题陷阱
无论是应聘 问题1:请问如何修改以下Python代码,使得下面的代码调用类A的show方法 答:这道题的考点是类继承,只要通过class 方法指定类对象就可以了.补充的代码如下: 问题2:请问如何修改 ...
- 淘宝二面试常见问题的答案来了,你看了吗?(二面及答案)
1.JVM内存结构1.7和1.8的区别 JVM内存分配 根据 JVM 规范,JVM 内存共分为虚拟机栈.堆.方法区.程序计数器.本地方法栈五个部分. 1.7和1.8区别 其实,移除永久代的工作从JDK ...
- 数据结构考研复试、工作面试常见问题及答案(动画版)
文章目录 1.逻辑结构与物理结构(存储结构)的区别? 2.算法的特点? 3.常见的数据结构? 4.链表结构和顺序存储结构的区别? 5.线性链表? 6.数组和链表的区别? 7.判断一个链表是否有环,如何 ...
最新文章
- C语言图形界面的编程
- AJAX跨域资源共享 CORS 详解
- 常用的绘图约定——提高绘图和读图的效率
- 计算机二级C语言辅导j机构,全国计算机二级C语言公基础知识辅导.pptx
- 西安电子科技大学第16届程序设计竞赛 F题
- mysql 辅助索引_MySQL InnoDB B+tree索引
- 字体图标 —— IconMoon
- Q-学习,马克尔决策过程:强化学习
- STM32工作笔记0072---UCOSIII在STM32F103上的移植
- Eclipse Egit 安装
- Mac上最好的白噪音软件:Noizio for Mac
- HTML5 浏览器大小缩放到一定大小固定页面
- MacOS下解决宿主机和docker容器之间网络互通
- 【装箱问题】基于Shuffled Complex Evolution (SCE) 算法解决装箱问题 (BPP)附matlab代码
- 06-手机登录token生成容联云短信验证用户认证和网关整合(网关做统一权限认证)
- 【面向对象程序设计】侩子手游戏(Java、JavaFX)
- 【论文笔记】:PyramidBox :A Context-assisted Single Shot Face Detector
- 2007最牛X网站收集-From bolm
- 获取每日一句,每天发给女朋友。
- Windows 8本地化多语言支持