前端面试集锦(DOM HTTP 框架(Vue))

这篇具有很好参考价值的文章主要介绍了前端面试集锦(DOM HTTP 框架(Vue))。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

DOM

  • 事件委托
    参考答案 :
    简易版 (有缺陷 没有考虑子元素 ): bug 在于,如果用户点击的是 li 里面的 span,就没法触发 fn,这显然不对

    ul.addEventListener(‘click’,function(e){
    if(e.target.tagName.toLowerCase() === ‘li’){
    fn() // 执行某个函数
    //console.log(‘您点击了li’)
    }
    })

高级版 :思路是点击 span 后,递归遍历 span 的祖先元素看其中有没有 ul 里面的 li。

function delegate(element, eventType, selector, fn) {
     element.addEventListener(eventType, e => {
       let el = e.target
       while (!el.matches(selector)) {
         if (element === el) {
           el = null
           break
         }
         el = el.parentNode
       }
       el && fn.call(el, e, el)
     })
     return element
   }
  • 用mouse事件 写一个可以拖拽的div
    参考答案 : 该题考察的比较全面 http://js.jirengu.com/mowevogufa/8/edit

    //HTML 部分

    // CSS部分 div{ border: 1px solid red; position: absolute; top: 0; left: 0; width: 100px; height: 100px; } *{margin:0; padding: 0;} //JS部分 //用户按下鼠标标记 判断是否在拖拽 默认没有 var dragging = false //上一次的坐标 默认为空 var position = null

    xxx.addEventListener(‘mousedown’,function(e){
    // 用户按下鼠标 开始拖拽
    dragging = true
    // 用户按下鼠标的时候 获取xy
    position = [e.clientX, e.clientY]
    })

    // 监听鼠标的移动 mousemove 只能监听在document上面
    document.addEventListener(‘mousemove’, function(e){
    if(dragging === false){return}
    console.log(‘hi’)
    // 获取鼠标坐标
    const x = e.clientX
    const y = e.clientY
    console.log(x,y)
    // 位移 距离 用户鼠标移动的 距离 这一次 减去上一次的
    const deltaX = x - position[0]
    const deltaY = y - position[1]
    // 先换算单位
    const left = parseInt(xxx.style.left || 0)
    const top = parseInt(xxx.style.top || 0)
    // 位移写到div上面
    xxx.style.left = left + deltaX + ‘px’
    xxx.style.top = top + deltaY + ‘px’
    // 这一次的坐标 继承 下一次的开始
    position = [x, y]
    })
    document.addEventListener(‘mouseup’, function(e){
    dragging = false
    })

HTTP

  • HTTP 状态码知道哪些?分别什么意思?
    参考答案
    — 2xx 表示成功
    — 3xx 表示需要进一步操作
    — 4xx 表示浏览器(客户端)方面出错
    — 5xx 表示服务器方面出错
    — 完整参考 http://www.runoob.com/http/http-status-codes.html

  • HTTP 缓存有哪几种?
    参考答案:* 需要详细的了解 ETag、CacheControl、Expires 的异同
    – 参考 https://imweb.io/topic/5795dcb6fb312541492eda8c
    答题要点
    1.ETag 是通过对比浏览器和服务器资源的特征值(如MD5)来决定是否要发送文件内容,如果一样就只发送 304(not modified)
    2.Expires 是设置过期时间(绝对时间),但是如果用户的本地时间错乱了,可能会有问题
    3.CacheControl: max-age=3600 是设置过期时长(相对时间),跟本地时间无关。

  • GET 和 POST 的区别 (常考)
    参考答案:(误解颇多 错解,但是能过面试)
    1.GET在浏览器回退时是无害的,而POST会再次提交请求。
    2.GET产生的URL地址可以被加入收藏栏,而POST不可以。
    3.GET请求会被浏览器主动cache,而POST不会,除非手动设置。
    4.GET请求只能进行url编码,而POST支持多种编码方式。
    5.GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
    6.GET请求在URL中传送的参数是有长度限制的,而POST么有。
    7.对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
    8.GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
    9.GET参数通过URL传递,POST放在Request body中

正解:就一个区别:语义——GET 用于获取资源,POST 用于提交资源
详细请参考 : https://zhuanlan.zhihu.com/p/22536382

  • Cookie V.S. LocalStorage V.S. SessionStorage V.S. Session
    参考答案
    1、Cookie V.S. LocalStorage
    主要区别是 Cookie 会被发送到服务器,而 LocalStorage 不会
    Cookie 一般最大 4k,LocalStorage 可以用 5Mb 甚至 10Mb(各浏览器不同)
    2、LocalStorage V.S. SessionStorage
    LocalStorage 一般不会自动过期(除非用户手动清除),而 SessionStorage 在回话结束时过期(如关闭浏览器)
    3、Cookie V.S. Session
    Cookie 存在浏览器的文件里,Session 存在服务器的文件里
    Session 是基于 Cookie 实现的,具体做法就是把 SessionID 存在 Cookie 里

框架Vue

  • watch 和 computed 和 methods 区别是什么?
    参考答案:思路:先翻译单词,再阐述作用,最后强行找不同。
    要点:
    1.computed 和 methods 相比,最大区别是 computed 有缓存:如果 computed 属性依赖的属性没有变化,那么 computed 属性就不会重新计算。methods 则是看到一次计算一次。
    2.watch 和 computed 相比,computed 是计算出一个属性(废话),而 watch 则可能是做别的事情(如上报数据)
  • Vue有哪些生命周期钩子函数? 分别有什么作用?
    参考答案
  1. 钩子在文档全都有,看红色的字。
  2. 把名字翻译一遍就是满分
  3. 要特别说明哪个钩子里请求数据,答案是 mounted
  • Vue如何实现组件之间的通信 ?
    参考答案
    1.父子组件:使用 v-on 通过事件通信
    2.爷孙组件:使用两次 v-on 通过爷爷爸爸通信,爸爸儿子通信实现爷孙通信
    3.任意组件:使用 eventBus = new Vue() 来通信 和 eventBus.$emit 是主要API
    4.任意组件:使用 Vuex 通信
  • Vue 数据响应式怎么做到的?
    参考答案
  1. 答案在文档《深入响应式原理》
  2. 要点
    1. 使用 Object.defineProperty 把这些属性全部转为 getter/setter
    2. Vue 不能检测到对象属性的添加或删除,解决方法是手动调用 Vue.set 或者 this.$set
  • Vue.set 是做什么用的? 参考答案 同上
  • Vuex 你怎么用的?
    背下文档第一句:Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式
    说出核心概念的名字和作用:State/Getter/Mutation/Action/Module
  • VueRouter 你怎么用的?
    背下文档第一句:Vue Router 是 Vue.js 官方的路由管理器。
    说出核心概念的名字和作用:History 模式/导航守卫/路由懒加载
    说出常用 API:router-link/router-view/this.router.replace/this.router.push(‘/user-admin’)
    this.$route.params
  • 路由守卫是什么?
    看官方文档的例子,背里面的关键的话

TypeScript

  • never 类型是什么?
    不应该出现的类型
  • TypeScript 比起 JavaScript 有什么优点?
    提供了类型约束,因此更可控、更容易重构、更适合大型项目、更容易维护

Webpack

  1. 必考:有哪些常见 loader 和 plugin,你用过哪些?
  2. 英语题:loader 和 plugin 的区别是什么?
  3. 必考:如何按需加载代码?
  4. 必考:如何提高构建速度?
  5. 转义出的文件过大怎么办?

上面五题请看这个不错的参考:https://zhuanlan.zhihu.com/p/44438844

安全

  1. 必考:什么是 XSS?如何预防?
    比较复杂,看方方的文章 https://zhuanlan.zhihu.com/p/22500730
  2. 必考:什么是 CSRF?如何预防?
    比较复杂,看若愚的文章 https://zhuanlan.zhihu.com/p/22521378

开放题目

  1. 必考:你遇到最难的问题是怎样的?
    要点:一波三折。参考 https://www.zhihu.com/question/35323603

  2. 你在团队的突出贡献是什么?
    把小事说大。

  3. 最近在关注什么新技术
    书、博客、推特、知乎,不要说 CSDN、百度。

  4. 有没有看什么源码,看了后有什么记忆深刻的地方,有什么收获
    看过源码说源码,推荐看 underscore.js 的源码
    没看过源码就说同事的代码,代码烂就说哪里烂,代码好就说哪里好
    收获:命名规范、设计模式
    刁钻题目
    代码

    1、 [1,2,3].map(parseInt)
    答案
    1
    NaN
    NaN
    代码
    2、 var a = {name: ‘a’}
    a.x = a = {}
    问 a.x 是多少?
    答案
    undefined
    3、(a 1 && a 2 && a3) 可能为 true 吗?
    利用 == 会调用 valueOf() 的特性
    var a = {
    value: 1,
    valueOf(){
    return this.value++
    }
    }
    a 1 && a 2 && a
    3 // true
    利用 a 会读取 window.a 的特性
    var value = 1;
    Object.defineProperty(window, ‘a’, {
    get(){
    return value++;
    }
    })
    a 1 && a 2 && a3 // true
    // 或者
    a =1 && a= 2 && a
    =3 // true文章来源地址https://www.toymoban.com/news/detail-790322.html

到了这里,关于前端面试集锦(DOM HTTP 框架(Vue))的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 前端面试题-HTML、HTTP、web综合问题(三)

    26 你做的⻚⾯在哪些流览器测试过?这些浏览器的内核分别是什么? IE : trident 内核 Firefox : gecko 内核 Safari : webkit 内核 Opera :以前是 presto 内核, Opera 现已改⽤Google - Chrome 的 Blink 内核 Chrome:Blink (基于 webkit ,Google与Opera Software共同开发) 27 div+css的布局较table布局有什么优点?

    2024年02月13日
    浏览(55)
  • 前端面试题-HTML、HTTP、web综合问题(一)

    1 前端需要注意哪些SEO 合理的 title 、 description 、 keywords :搜索对着三项的权重逐个减⼩, title值强调重点即可,重要出现不要超过2次,⽽且要靠前,不同⻚⾯ title 要有所不同; description 把⻚⾯内容⾼度概括,⻓度合适,不可过分堆砌,不同⻚⾯description 有所

    2024年02月12日
    浏览(54)
  • 前端面试题-HTML、HTTP、web综合问题(二)

    14 WEB标准以及W3C标准是什么? 标签闭合、标签⼩写、不乱嵌套、使⽤外链 css 和 js 、结构⾏为表现的分离 15 xhtml和html有什么区别? ⼀个是功能上的差别 主要是 XHTML 可兼容各⼤浏览器、⼿机以及 PDA ,并且浏览器也能快速正确地编译⽹⻚ 另外是书写习惯的差别 XHTML 元素必须被

    2024年02月12日
    浏览(52)
  • 【学姐面试宝典】—— 前端基础篇Ⅰ(HTTP/HTML/浏览器)

    前言 博主主页👉🏻蜡笔雏田学代码 专栏链接👉🏻【前端面试专栏】 今天开始学习前端面试题相关的知识! 感兴趣的小伙伴一起来看看吧~🤞 http: 超文本传输协议,是互联网上应用最为广泛的一种网络协议,是一个客户端和服 务器端请求和应答的标准(TCP),用于从 WW

    2024年02月19日
    浏览(50)
  • 【学姐面试宝典】—— 前端基础篇Ⅱ(HTTP/HTML/浏览器)

    前言 博主主页👉🏻蜡笔雏田学代码 专栏链接👉🏻【前端面试专栏】 今天继续学习前端面试题相关的知识! 感兴趣的小伙伴一起来看看吧~🤞 作用是 Doctype 声明于文档最前面,告诉浏览器以何种方式来渲染页面。 这里有两种模式, 严格模式 和 混杂模式 。 严格模式的排

    2024年01月25日
    浏览(74)
  • 前端面试:【网络协议与性能优化】HTTP/HTTPS、TCP/IP和WebSocket

    嗨,亲爱的Web开发者!在构建现代Web应用时,了解网络协议是优化性能和确保安全性的关键。本文将深入探讨HTTP/HTTPS、TCP/IP和WebSocket这三个网络协议,帮助你理解它们的作用以及如何优化Web应用的性能。 1. HTTP/HTTPS协议: HTTP(超文本传输协议): HTTP是用于在Web上传输数据的

    2024年02月11日
    浏览(51)
  • 【朝夕教育】2023年03月 其他-Web前端基础面试题(http_20道)

    一、http/浏览器 1、说一下http和https https 的 SSL 加密是在传输层实现的。 (1)http 和 https 的基本概念 http: 超文本传输协议,是互联网上应用最为广泛的一种网络协议,是一个客户端和服 务器端请求和应答的标准(TCP),用于从 WWW 服务器传输超文本到本地浏览器的传 输协议,它

    2023年04月09日
    浏览(44)
  • nodejs项目实战教程01——http服务和URL类,前端开发社招面试解答之性能优化

    需要在终端重新执行一次node app.js浏览器的内容才会刷新 4.如何获取url中的参数 ============================================================================ 4.1 URL类基础 建议大家可以先看看Node.js API文档中的url 网址部分,这里做简要说明。url字符串在nodejs的url模块,有两种解析API,其中旧版的

    2024年04月11日
    浏览(46)
  • 前端面试话术集锦第一篇

    这是记录 前端面试的话术集锦第1篇博文——基础篇一 ,我会不断更新前端面试话术的博文。❗❗❗ 合理的 title 、 description 、 keywords ,搜索对着三项的权重逐个减⼩: title :值强调重点即可,重要出现不要超过 2 次,⽽且要靠前,不同⻚⾯ title 要有所不同 descript

    2024年02月11日
    浏览(37)
  • nginx配置若依框架vue打包项目(同时支持http和https)

    该配置模版主要是若依框架前后端配置,若只是配置普通的vue项目,直接复制一下小模块即可   #vue页面访问配置      location  / {              root /www/wwwroot/www.xxx.com;             # autoindex on;              try_files $uri $uri/ /index.html;              index  index.html index.htm

    2024年01月25日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包