zoukankan      html  css  js  c++  java
  • mst总结

     1、jsonp跨域

    Jsop的原理:利用script不存在跨域的问题,动态创建script标签,把需要请求的数据源地址赋值给其src属性,并且指定一个回调函数,从而接受到我们想要的数据

     

    后台设置下 nodejs

    res.setHeader("Access-Control-Allow-Origin", "*");//设置随便跨域

    2、微信分享图片的解决方案

     用微信jssdk说明文档

     

    3、mvc和mvvm的区别

     

     

     https://segmentfault.com/a/1190000004847657

     4、页面的分享功能

    5、本地储存localStoragecookie的区别

    ① cookie在浏览器与服务器之间来回传递。   sessionStorage和localStorage不会把数据发给服务器,仅在本地保存

      ②数据有效期不同:   cookie只在设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭。   sessionStorage:仅在当前浏览器窗口关闭前有效。   localStorage  始终有效,长期保存。

      ③cookie数据还有路径的概念,可以限制cookie只属于某个路径下。   存储大小也不同,cookie数据不能超过4k,sessionStorage和localStorage 虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大。  

    ④ 作用域不同   sessionStorage不在不同的浏览器窗口中共享;   localStorage在所有同源窗口中都是共享的;   cookie也是在所有同源窗口中都是共享的;   WebStorage 支持事件通知机制,可以将数据更新的通知发送给监听者。Web Storage 的 api 接口使用更方便。

    6、闭包的作用

    闭包的作用 返回函数内部的变量 内存泄漏(原因没了解过)

    闭包:当函数执行的时候,会形成一个新的私有的作用域,来保护里面的私有变量不受外界的干扰,我们把函数的这种保护机制称之为闭包。

    闭包的作用:保护私有作用域不受外界的干扰。

     7、• link 与@import 的区别

       ● link属于html标签,而@import是css提供的。  

     ● 页面被加载时,link会同时被加载,而@import引用的css会等到页面加载结束后加载。

      ● link是html标签,因此没有兼容性,而@import只有IE5以上才能识别。

      ● link方式样式的权重高于@import的。

    8、JS箭头函数和function的区别

    箭头函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。
    箭头函数不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误。
    箭头函数不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用Rest参数代替。
    不可以使用yield命令,因此箭头函数不能用作Generator函数。

    9、 js中let和var定义变量的区别

    let : 变量只能声明一次

    var : 变量可以多次声明

    https://www.jianshu.com/p/bf548e0ee60b

    10、移动端Click300毫秒点击延迟

    产生缘由

    移动端浏览器的默认显示宽度是980px(不同机型各异,但相差不大),而不是屏幕的宽度(320px或其他)。

    为了对早期普通网页更好的体验,iphone设计了双击放大显示的功能--这就是300ms延迟的来源:如果用户一次点击后300ms内没有其他操作,则认为是个单击行为;否则为双击放大行为。

    解决方案:

    设置不能缩放:user-scalable=no。 不能缩放就不会有双击缩放操作,因此click事件也就没了300ms延迟,这个是Chrome首先在Android中提出的。

    设置显示宽度:width=device-width。Chrome 开发团队不久前宣布,在 Chrome 32 这一版中,他们将在包含 width=device-width 或者置为比 viewport 值更小的页面上禁用双击缩放。

    当然,没有双击缩放就没有 300 毫秒点击延迟。 IE的指针事件 (Pointer Events):设置touch-action:none,根据规范,touch-action 属性决定 “是否触摸操作会触发用户代理的默认行为。

    这包括但不限于双指缩放等行为”。 从实际应用的角度来看,touch-action决定了用户在点击了目标元素之后,是否能够进行双指缩放或者双击缩放。

    因此,这也相当完美地解决了 300 毫秒点击延迟的问题。 鉴于上述的3种解决方案,现在较为通用的meta设置为:

    <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">

    https://www.jianshu.com/p/fed6b110ff2e

    11、Doctype的作用?

     <!DOCTYPE>声明位于HTML文档中的第一行,处于 <html> 标签之前。告知浏览器的解析器用什么文档标准解析这个文档。DOCTYPE不存在或格式不正确会导致文档以兼容模式呈现。

    12、对于水平,垂直居中都有那些方案?

    1、行内元素 设置 text-align:center

    2、定宽块状元素 设置 左右 margin 值为 auto

    3、不定宽块状元素

    a:在元素外加入 table 标签(完整的,包括 table、tbody、tr、td),该元素写在 td 内,然后设置 margin 的值为 auto

    b:给该元素设置 displa:inine 方法

    c:父元素设置 position:relative 和 left:50%,子元素设置 position:relative 和 left:50%垂直居中设置

    1、父元素高度确定的单行文本 设置 height = line-height

    2、父元素高度确定的多行文本

    a:插入 table (插入方法和水平居中一样),然后设置 vertical-align:middle

    b:先设置 display:table-cell 再设置 vertical-align:middle在前端面试中,大都会问你div居中的方法

     https://www.zhihu.com/question/20543196 

    13、css的盒子模型,标准的和低版本IE?

     http://www.cnblogs.com/love-sea520/p/5903442.html

     14、inline,inline-block,block的区别?

     http://www.cnblogs.com/jdonson/archive/2011/06/10/2077932.html

     15、css优先级顺序是什么?

    1.  内联样式表的权值最高 1000;

    2.  ID 选择器的权值为 100

    3.  Class 类选择器的权值为 10

    4.  HTML 标签选择器的权值为 1

    http://www.cnblogs.com/xugang/archive/2010/09/24/1833760.html

    16、对于浮动的清除都有那些方案?

    http://blog.csdn.net/zengyonglan/article/details/53304487

    17、什么是margin折叠?解决方法?

    margin折叠?比邻元素的边距总是折叠。

    http://blog.sina.com.cn/s/blog_601b97ee0101b94c.html 

    18、两个inline元素之间的空隙是什么?如何消除?

    19、如何适配移动端?

    <meta name="viewport" content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">

    其中 width:viewport 的宽度,可以指定为一个像素值,如:640,或者为特殊的值,如:device-width (设备的宽度)。      

    initial-scale:初始缩放比例,即当浏览器第一次加载页面时的缩放比例。值为 1.0 即原始尺寸。   

    maximum-scale:允许浏览者缩放到的最大比例,一般设为1.0,即原始尺寸。   

    minimum-scale:允许浏览者缩放到的最小比例,一般设为1.0,即原始尺寸。   

    user-scalable:浏览者是否可以手动缩放,yes 或 no 。

    20、什么是less,sass,postcss?

     Less 是一门 CSS 预处理语言,它扩展了 CSS 语言,增加了变量、Mixin、函数等特性,使 CSS 更易维护和扩展。

    PostCSS 可以直观的理解为:它就是一个平台!

    http://www.w3cplus.com/PostCSS/using-postcss-together-with-sass-stylus-or-less.html

    21、什么是栅格,有什么优点和缺点? 什么是栅格?

     栅格化设计 就是把网页的宽度分成固定的相同宽度,然后列出各种组合的可能,以方便在进行页面呈现的时候能够快速的进行布局,通常分成12等分或者24等分

     22、什么是重绘和回流,有那些可以减少他们的做法?

    当render tree中的一部分(或全部)因为元素的规模尺寸,布局,隐藏等改变而需要重新构建。这就称为回流(reflow)。

    每个页面至少需要一次回流,就是在页面第一次加载的时候。

    在回流的时候,浏览器会使渲染树中受到影响的部分失效,并重新构造这部分渲染树,完成回流后,浏览器会重新绘制受影响的部分到屏幕中,该过程成为重绘。

    http://www.css88.com/archives/4996

    23、什么是字体图标,有什么优点和缺点?

    优点

    1、轻量性:一个图标字体比一系列的图像(特别是在Retina屏中使用双倍图像)要小。一旦图标字体加载了,图标就会马上渲染出来,不需要下载一个图像。可以减少HTTP请求,还可以配合HTML5离线存储做性能优化。

    2、灵活性:图标字体可以用过font-size属性设置其任何大小,还可以加各种文字效果,包括颜色、Hover状态、透明度、阴影和翻转等效果。可以在任何背景下显示。使用位图的话,必须得为每个不同大小和不同效果的图像输出一个不同文件。

    3、兼容性:网页字体支持所有现代浏览器,包括IE低版本。
    缺点

    1、图标字体只能被渲染成单色或者CSS3的渐变色,由于此限制使得它不能广泛使用。

    2、使用版权上有限制,有好多字体是收费的。当然也有很多免费开源的精美字体图标供下载使用。

    3、创作自已的字体图标很费时间,重构人员后期维护的成本偏高

    24、经常使用的css命名有那些?是否遇到不容易起名字的class?最后如何解决的?

    页头:header 如:#header{属性:属性值;}或.header{属性:属性值;},也许你需要了解class与id区别及用法
    登录条:loginBar 标志:logo 侧栏:sideBar
    广告:banner 导航:nav 子导航:subNav
    菜单:menu 子菜单:subMenu 搜索:search
    滚动:scroll 页面主体:main 内容:content
    标签页:tab 文章列表:list 提示信息:msg
    小技巧:tips 栏目标题:title 加入:joinus
    指南:guild 服务:service 热点:hot
    新闻:news 下载:download 注册:regsiter
    状态:status 按钮:btn 投票:vote
    合作伙伴:partner 友情链接:friendLink 页脚:footer
    版权:copyRight
    常用配合标签div、h1、h2、h3、h4、span、em、b、strong、font、u

    http://www.imooc.com/article/5221


    25、有那些提高的css的质量的做法?

    程序代码
    html, body, div, h1, h2, h3, h4, h5, h6, ul, ol, dl, li, dt, dd, p, blockquote, pre, form, fieldset, table, th, td { margin: 0; padding: 0; }

    26、基本数据类型有那些?

    1、基本数据类型(值类型) 看上去数据结构比较的简单数字(number) 字符串(string) 布尔(boolean) null undefined
    2、引用数据类型 看上去数据结构相对复杂的对象数据类型: object{},Array []数组 /^$/正则 时间(Date) .....函数数据类型(function)


    区别:

    基本数据类型是按照值来操作,引用数据类型是按地址来操作的(开辟一个新的空间)

    27、==和===的区别?

    =赋值
    ==比较
    ===绝对比较 在类型做判断
    28、call和apply的区别?

    call和apply
    1. 改变当前执行函数中的this为call/apply中的第一个参数的值。 Fn.call(obj) fn中的this在执行的时候变为obj
    2. 让当前调用call/apple方法的函数执行。Fn.call()让fn执行
    Call,apply:用来改变函数中的this关键字的,第一个参数是你想让this是谁就写谁
    区别:在执行函数传递参数的时候,call是一个个传,apply是把需要传递的参数放到一个数组中,一起传进去
    Call/apply:第一个参数写谁,函数中的this就是谁,但是有特殊的情况:
    在非严格模式下:第一个参数不写,或者写null/undefined,this都是window
    在严格模式下(“use strict”):第一个参数写谁就是谁,写null就是null,写undefined就是undefined,不写也是undefined

    函数名.call([this],parnmeter1,parameter1……)
    函数名.apply([this],[ parnmeter1,parameter1……])
    总结:Function原型上的call其实就是让call方法中的this执行,并且把this中的“this”变为了我们想要的,只要我们执行的是call方法,并且让这个方法中的this变为我们传进来的参数,那么其实就是相当于传进来的这个参数在执行

    当Call过多的时候,执行的就是当前函数本身。

    29、this在js中的用法,以及怎么确定它的实际值?

    This
    This:第一人称“我”,——>当前这个方法执行的主体
    我们在js中研究的this,主要是研究函数中的this
    上下文(context):——>当前这个方法(行为)执行的范围
    我们通常都是在函数中使用this,那么在函数中如何的区分this
    this是谁和函数在哪里定义的和在哪里执行的没有半毛钱关系,和下面的这三句话有关系:
    1. 自执行函数中的this永远是window
    2. 给函数绑定事件,对应方法中的this就是当前被绑定事件的元素。
    3. 不管函数是在哪里面执行的,我们就看函数名之前是否有点“.”,有的话“.”前面是谁this就是谁,没有的话this就是window。
    4. 在构造函数中,当我们new Fn的时候,Fn这个类中this是我们当前创建的实例。
    5. 在function中用call和apply强制转换this,call优先
    6. this是谁和函数在哪里定义的和在哪里执行的没有关系,只和当前函数执行的主题有关系——> 如何判断函数执行的主题;看函数名之前有没有“.”,没有的话this就是window,有的话“.”前面是谁this就是谁,函数名(形参值);例如:sum(100);
    7. 给函数绑定事件,对应方法中的this就是当前被绑定事件的元素。
    8. 自执行函数中的this是window。
    在预解释的时候,不管条件是否成立,判断体中的都要进行预解释
    in: attr in object 检测attr是否为object这个对象的一个属性
    "a" in window:判断a是否为window这个浏览器对象的一个属性,如果是返回true,不是返回的false

    30、不考虑浏览器兼容性,实现AJAX


    http://www.cnblogs.com/wushuaizaiza/p/3890498.html


    31、简单说明下原型链,作用域链?

    32、有那些实现继承的方式?

    33、get请求和post请求的区别?


    http://www.cnblogs.com/hyddd/archive/2009/03/31/1426026.html

    34、有那些跨域方式?解释JSONP是怎样工作的?


    35、简要描述事件代理的实现?

    36、什么是订阅发布者模式?

    37、如何解决异步的回调嵌套?

    38、web常见的攻击方式?

    39、如何理解模块化?

    40、好的组件应该是有那些特点?


    41、glup和webpack的区别?


    42、前端有哪些优化方式?



    43、mvc和mvvm的区别?


    44、遇到过哪些技术难题?如何解决的?


    45、如何抉择自己编写和使用第三方组件?


    46、有那些提高javascript质量的做法?


    47、一个页面从输入url到页面加载显示完成,这个过程中都发生了什么?

    48、写继承的代码


    49、深拷贝


    50、如何解决回调嵌套


    51、编写原生ajax

    52、setInterval和setTimeout的区别、它们的返回值是什么类型,表示什么含意呢?

     window.setInterval(fn,1000);//每隔1000ms执行一次fn方法,不会停止。
    window.setTimeout(fn,1000);//1000ms后只运行一次fn方法,虽然只运行一次,可以递归调用自身模拟setInterval方法。例如:

     
    这2个方法的返回值都是number类型,是该定时器的队列号。 
     
    53、说出常用的数学方法?

    1. Math.abs(-55);//绝对值,返回结果为55
    2. Math.ceil(2.1);//向上取整 3
    3. Math.round(2.3)//四舍五入结果为2
    4. Math.round(2.6)//四舍五入结果为3
    5. Math.floor(2.9);// 向下取整 2
    6. Math.floor(-2.9);// 向下取整 -3
    7. Math.sqrt(3);//开平方 1.732........
    8. Math.pow(2,2);//2的2次方 为4
    9. Math.random();//随机数,是个0~1之间的数,取1-100之间的随机正数: n=Math.random()*100;//n>0 n<100
    10. Math.sin(number);
    11. Math.cos(number);
    12. Math.max(x,y,z);//获取最大值,可以有n个参数 不一定是2个
    13. Math.min(x,y,z,w);//获取最小值

    54、编写一个:取得指定范围的随机数的方法

    function fn(m, n) {
    return Math.floor(Math.random() * (n - m + 1)) + m;
    }
    console.log(fn(30, 48));

     
     55、常用的时间方法有那些?
    1) var time=new Date();//可有参数也可以无,时间戳(无参数表示代码运行的时间点)

    2) var y=time.getFullYear();//年

    3) var m=time.getMonth()+1;//月,表示 从0开始,一月是0、二月是1

    4) var day=time.getDate();//日

    5) var week=time.getDay();//星期 ,从0开始, 0是周日

    6) var h=time.getHours();

    7) var minu=time.getMinutes();

    8) var s=time.getSeconds();//秒

    9) var ms=time.getMilliseconds();//毫秒

    10) time.getTime()//当前到1970年1月1日的毫秒数

     56、
     
     
     
     
    不忘初心,方得始终,初心易得,始终难守。
  • 相关阅读:
    Uploadify跨域上传原理
    C#中HttpClient使用注意:预热与长连接
    前端必读:浏览器内部工作原理
    从零开始学习jQuery
    ManualResetEvent 类的用法
    线程池用法的改进
    我的第一篇博客
    Es6新语法 let篇
    如何测试解析是否生效?
    主机记录和记录值(域名服务器绑定详解)
  • 原文地址:https://www.cnblogs.com/chuxinsyn/p/8086445.html
Copyright © 2011-2022 走看看