资讯专栏INFORMATION COLUMN

WEB前端面试题整理(二)

solocoder / 2465人阅读

摘要:栈是操作系统在建立某个进程时或者线程为这个线程建立的存储区域。在具有多线程机制的操作系统中,处理机调度的基本单位不是进程而是线程。一个进程可以有多个线程,而且至少有一个可执行线程。

WEB前端面试题的记录(二)

1、一次完整的HTTP事务是怎样的一个过程:
基本流程:

域名解析

发起TCP的3次握手

建立TCP连接后发起http请求

服务器端响应http请求,浏览器得到html代码

浏览器解析html代码,并请求html代码中的资源

浏览器对页面进行渲染呈现给用户

2、JSONP是什么?它是如何实现跨域的?为什么它可以实现跨域?
JSONP(JSON with Padding)是一个非官方的协议,它允许在服务器端集成Script tags返回至客户端,通过javascript callback的形式实现跨域访问。
由于同源策略的限制,XmlHttpRequest只允许请求当前源(域名、协议、端口)的资源,为了实现跨域请求,可以通过script标签实现跨域请求(因为同源策略不阻止动态脚本插入,并且将脚本看作是从提供 Web 页面的域上加载的),然后在服务端输出JSON数据并执行回调函数,从而解决了跨域的数据请求。

3、闭包:函数能被外部调用到,则该作用连上的所有变量都会被保存下来。
作用:①可以读取函数内部的变量;②相当于划出了一块私有作用域,避免数据污染;③让变量始终保存在内存中
使用全局变量被认为是不好的习惯,而且容易造成错误并且维护成本较高,所以js可以采用闭包的方式读取函数的内部变量。但是如果大量使用闭包就会造成过多的变量始终保存在内存中,会造成内存泄漏。

4、模块化编程
①AMD(异步模块定义) requirejs
defined(id,deps,factory)
require([dependency],function(){})
异步加载,浏览器不会失去响应
它指定的回调函数,只有前面的模块都加载完成后,才会运行,解决了依赖性问题
②CMD(通用模块定义) seajs
模块定义方式和模块加载时机处理不同
defined(id,deps,factory)
function(require,exports,module)
module.exports = ______;
③区别:AMD依赖前置,在定义模块的时候就要声明其依赖的模块;CMD就近依赖,只有在用到哪个模块的时候再去require;

5、JS继承与原型问题
Js所有的函数都有一个prototype属性,这个属性引用了一个对象,即原型对象,也简称原型。每一个对象都有原型,在浏览器中它体现在一个隐藏的 proto 属性上。
当一个对象需要调用某个方法时,它回去最近的原型上查找该方法,如果没有找到,它会再次往下继续查找。这样逐级查找,一直找到了要找的方法。 这些查找的原型构成了该对象的原型链条。原型最后指向的是null。我们说的原型继承,就是将父对像的方法给子类的原型。子类的构造函数中不拥有这些方法和属性。

6、一个页面从URL到加载显示完成,都发生了什么?
①通过DNS将该地址解析成IP地址;
②发起网络连接,进行http协议会话:客户端发送报头(请求报头),服务端回馈报头(响应报头)
③返回一个页面(根据页面上的外链的URL重新发送请求获取)
④接收文件完毕,对加载到的资源进行语法解析,以及相应的内部数据结构(网页渲染)

7、队列、堆、栈的区别?
队列是先进先出:就像一条路,有一个入口和一个出口,先进去的就可以先出去。而栈就像一个箱子,后放的在上边,所以后进先出。堆是在程序运行时,而不是在程序编译时,申请某个大小的内存空间。即动态分配内存,对其访问和对一般内存的访问没有区别。
栈(Stack)是操作系统在建立某个进程时或者线程为这个线程建立的存储区域。在编程中,例如C/C++中,所有的局部变量都是从栈中分配内存空间,实际上也不是什么分配,只是从栈顶向上用就行,在退出函数的时候,只是修改栈指针就可以把栈中的内容销毁,所以速度最快。
堆(Heap)是应用程序在运行的时候请求操作系统分配给自己内存,一般是申请/给予的过程。由于从操作系统管理的内存分配所以在分配和销毁时都要占用时间,所以用堆的效率低的多!但是堆的好处是可以做的很大,C/C++对分配的Heap是不初始化的。
在Java中除了简单类型(int,char等)都是在堆中分配内存,这也是程序慢的一个主要原因。但是跟C/C++不同,Java中分配Heap内存是自动初始化的。在Java中所有的对象(包括int的wrapper Integer)都是在堆中分配的,但是这个对象的引用却是在Stack中分配。也就是说在建立一个对象时从两个地方都分配内存,在Heap中分配的内存实际建立这个对象,而在Stack中分配的内存只是一个指向这个堆对象的指针(引用)而已。

8、什么是线程?进程和线程的关系是什么?
线程可定义为进程内的一个执行单位,或者定义为进程内的一个可调度实体。 在具有多线程机制的操作系统中,处理机调度的基本单位不是进程而是线程。一个进程可以有多个线程,而且至少有一个可执行线程。
线程和进程的关系:
(1)线程是进程的一个组成部分.
(2)进程的多个线程都在进程地址空间活动.
(3)系统资源是分配给进程的,线程需要资源时,系统从进程的资源里分配给线程.
(4)处理机调度的基本单位是线程.

9、CSS3中的transform属性和transition属性?
transform:
功能:使元素变形的属性,其配合rotate(旋转角度)、scale(缩放倍数)、skew(扭曲元素)等参数一起使用
语法:
transform:rotate(旋转角度);//正数为顺时针、负数为逆时针;
transform:rotate(30deg);//顺时针旋转30度
transform:rotate(-20deg);//逆时针旋转20度
transform:scale(缩放倍数);
transform:scale(1.20);//放大1.2倍
transition:
功能:设置元素由样式一变为样式二所需要的一些变化效果
语法:transition: property duration timing-function delay ;
值 描述
transition-property 规定设置过渡效果的 CSS 属性的名称。
transition-duration 规定完成过渡效果需要多少秒或毫秒。
transition-timing-function 规定速度效果的速度曲线。
transition-delay 定义过渡效果何时开始。

10、什么是MVVM框架?
MVVM是Model-View-ViewModel的简写。
MVVM 是 Web 前端一种非常流行的开发模式,利用 MVVM 可以使我们的代码更专注于处理业务逻辑而不是去关心 DOM 操作。目前著名的 MVVM 框架有 vue, avalon, angular 等,这些框架各有千秋,但是实现的思想大致上是相同的:数据绑定 + 视图刷新。跟MVC一样,主要目的是分离视图(View)和模型(Model)。View可以独立于Model变化和修改,一个ViewModel可以绑定到不同的"View"上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。
在MVVM中,数据是核心,由于VIewModel与View之间的双向绑定,操作了ViewModel中的数据(当然只能是监控属性),就会同步到DOM,我们透过DOM事件监控用户对DOM的改动,也会同步到ViewModel。
MVVM框架的优点:
(1)方便测试
在MVC下,Controller基本是无法测试的,里面混杂了个各种逻辑,而且分散在不同的地方。有了MVVM我们就可以测试里面的viewModel,来验证我们的处理结果对不对。
(2)便于代码的移植
可以把一些视图逻辑放在一个ViewModel里面,让很多view重用这段视图逻辑。比如iOS里面有iPhone版本和iPad版本,除了交互展示不一样外,业务逻辑的model是一致的。这样,我们就可以以很小的代价去开发另一个app。
(3)独立开发
开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计,使用Expression Blend可以很容易设计界面并生成xml代码。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/82231.html

相关文章

  • 前端面试整理

    摘要:主要讲讲新增哪些地理定位,拖放,存储应用缓存,,。使用严格模式的限制有哪些。同源协议,域名,端口相同方法一。方法是在原数组上进行操作。如何设置一个未知宽高的对话框在页面中绝对居中。 1.HTML5的新特性。 主要讲讲新增哪些API:地理定位,拖放,web存储应用缓存,webworkers, sse 。 http://www.w3school.com.cn/html5/html_5_in...

    cartoon 评论0 收藏0
  • 前端面试整理

    摘要:主要讲讲新增哪些地理定位,拖放,存储应用缓存,,。使用严格模式的限制有哪些。同源协议,域名,端口相同方法一。方法是在原数组上进行操作。如何设置一个未知宽高的对话框在页面中绝对居中。 1.HTML5的新特性。 主要讲讲新增哪些API:地理定位,拖放,web存储应用缓存,webworkers, sse 。 http://www.w3school.com.cn/html5/html_5_in...

    seanHai 评论0 收藏0
  • 前端面试整理

    摘要:主要讲讲新增哪些地理定位,拖放,存储应用缓存,,。使用严格模式的限制有哪些。同源协议,域名,端口相同方法一。方法是在原数组上进行操作。如何设置一个未知宽高的对话框在页面中绝对居中。 1.HTML5的新特性。 主要讲讲新增哪些API:地理定位,拖放,web存储应用缓存,webworkers, sse 。 http://www.w3school.com.cn/html5/html_5_in...

    gaomysion 评论0 收藏0
  • 前端面试之路(javaScript基础整理)

    摘要:在标签中添加属性,本质上是跟在标签里面写属性时一样的,所以属性值最终都会编译为字符串类型。这个节点包括很多,比如,以及一些方法等方法。一个对象有很多,该集合名字为,里面有其他以及,里面有很多。 一、变量类型和计算 JS中使用typeof能得到哪些类型 变量类型 值类型:变量本身就是含有赋予给它的数值的,它的变量本身及保存的数据都存储在栈的内存块当中 引用类型:引用类型当然是分配到...

    AbnerMing 评论0 收藏0
  • 前端资源系列(4)-前端学习资源分享&前端面试资源汇总

    摘要:特意对前端学习资源做一个汇总,方便自己学习查阅参考,和好友们共同进步。 特意对前端学习资源做一个汇总,方便自己学习查阅参考,和好友们共同进步。 本以为自己收藏的站点多,可以很快搞定,没想到一入汇总深似海。还有很多不足&遗漏的地方,欢迎补充。有错误的地方,还请斧正... 托管: welcome to git,欢迎交流,感谢star 有好友反应和斧正,会及时更新,平时业务工作时也会不定期更...

    princekin 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<