写在前面

CSDN话题挑战赛第1期

  • 活动详情地址:https://marketing.csdn.net/p/bb5081d88a77db8d6ef45bb7b6ef3d7f

  • 参赛话题:前端面试宝典

  • 话题描述:欢迎各位加入话题创作得小伙伴,如果我没有猜错得话,我觉得你是应该同我一样是一位前端人。如今前端在IT事业中的占比越来越重,已经成为不可缺少的部分,前端技术也是层出不穷,各种技术类、技术框架也蜂拥而出,前端面试的难度也随之增加,如果我们拥有一套前端面试宝典。如果你是应聘者:你就可以从容的solo面试官,如果你是面试官:你就可以将应聘者拷问到骨子里!
    总之我们大家一起将自己的面试经验以及学习到的知识点汇聚于此,形成一套体系的前端面试宝典。让读者无论是面试还是学习都能够有非常大的收获。就让我们携手共筑前端面试宝典吧!!!

  • 创作模板:

携手共筑前端面试宝典

  • 网站开发中,如何实现图片的懒加载
    • 答案
  • 浏览器中如何实现剪切板复制内容的功能
    • 答案
  • localhost:3000 与 localhost:5000 的 cookie 信息是否共享
    • 答案
  • 什么是 CSRF 攻击
    • 答案
  • 在浏览器中如何监听剪切板中内容
    • 答案
  • 如何把 json 数据转化为 demo.json 并下载文件
    • 答案
  • HTML 中的 input 标签有哪些 type
    • 答案
  • 什么是 Data URL
    • 答案
  • 什么是 HTML 的实体编码 (HTML Entity Encode)
    • 答案
  • textarea 如何禁止拉伸
    • 答案
  • 在 Canvas 中如何处理跨域的图片
    • 答案
  • 行级元素和块元素和行内块元素的区别
    • 答案
  • 防抖(debounce)
    • 答案
  • 节流(throttle)
    • 答案

网站开发中,如何实现图片的懒加载

答案

方法一、vue-router里面的路由懒加载
方法二、位置计算用windo.scroll+DataSet.src API
方法三、浏览器的loading属性,缺点目前兼容性不太好

浏览器中如何实现剪切板复制内容的功能

答案

方法一、Clipboard-copy第三方库来实现

localhost:3000 与 localhost:5000 的 cookie 信息是否共享

答案

共享,原因:根据同源策略,cookie 是区分端口的,但是浏览器实现来说,“cookie 区分域,而不区分端口,也就是说,同一个 ip 下的多个端口下的 cookie 是共享的!

什么是 CSRF 攻击

答案

跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的 Web 应用程序上执行非本意的操作的攻击方法。跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。
维基百科:
CSRF (Cross-site request forgery),跨站请求伪造,又称为 one-click attack,顾名思义,通过恶意引导用户一次点击劫持 cookie 进行攻击。

  1. 使用 JSON API。当进行 CSRF 攻击时,请求体通过 构建,请求头为 application/www-form-urlencoded。它难以发送 JSON 数据被服务器所理解。
  2. CSRF Token。生成一个随机的 token,切勿放在 cookie 中,每次请求手动携带该 token 进行校验。
  3. SameSite Cookie。设置为 Lax 或者 Strict,禁止发送第三方 Cookie。

在浏览器中如何监听剪切板中内容

答案

通过 Clipboard API 可以获取剪切板中内容,但需要获取到 clipboard-read 的权限

如何把 json 数据转化为 demo.json 并下载文件

答案

json 视为字符串,可以利用 DataURL 进行下载
Text -> DataURL
除了使用 DataURL,还可以转化为 Object URL 进行下载
Text -> Blob -> Object URL
总结:

  1. 模拟下载,可以通过新建一个 标签并设置 url 及 download 属性来下载
  2. 可以通过把 json 转化为 dataurl 来构造 URL
  3. 可以通过把 json 转换为 Blob 再转化为 ObjectURL 来构造 URL

HTML 中的 input 标签有哪些 type

答案

Button、checkbox、color、date、datetime-local、email、file、hidden、image、month、number、password、radio、range、reset、search、submit、tel、text、time、url、week

什么是 Data URL

答案

Data URL 是将图片转换为 base64 直接嵌入到了网页中,使用这种方式引用图片,不需要再发请求获取图片。 使用 Data URL 也有一些缺点:base64 编码后的图片会比原来的体积大三分之一左右。
Data URL 形式的图片不会缓存下来,每次访问页面都要被下载一次。可以将 Data URL 写入到 CSS 文件中随着 CSS 被缓存下来。

什么是 HTML 的实体编码 (HTML Entity Encode)

答案

不可分的空格:&nbsp; <(小于符号):&lt;
(大于符号):&gt; &(与符号):&amp;
″(双引号):&quot; ‘(单引号):’&apos;
一般为了避免 XSS 攻击,会将 <> 编码为 < 与 >,这些就是 HTML 实体编码。

textarea 如何禁止拉伸

答案

textarea { resize: none; }

在 Canvas 中如何处理跨域的图片

答案

img.setAttribute(“crossOrigin”, “anonymous”);

行级元素和块元素和行内块元素的区别

答案

行级元素:1、可以排成一行 2、不能设置宽高 (例span)
块级元素:1、独占一行 2、可以设置宽高 3、会产生内容溢出(例div)
行内块级元素:1、可以排成一行 2、可以设置宽和高(例img)

防抖(debounce)

答案

触发高频事件后 n 秒内函数只会执行一次,如果 n 秒内高频事件再次被触发,则重新计算时间; 防止抖动,单位时间内事件触发会被重置,避免事件被误伤触发多次。代码实现重在清零 clearTimeout。防抖可以比作等电梯,只要有一个人进来,就需要再等一会儿。业务场景有避免登录按钮多次点击的重复提交。

// 防抖函数
function debounce(fn, wait) {
let timer;
return function () {
let _this = this;
let args = arguments;
if (timer) {
clearTimeout(timer);
}
timer = setTimeout(function () {
fn.apply(_this, args);
}, wait);
};
}
// 使用
window.onresize = debounce(function () {
console.log(“resize”);
}, 500);

节流(throttle)

答案

节流(throttle)
高频事件触发,但在 n 秒内只会执行一次,所以节流会稀释函数的执行频率
节流:控制流量,单位时间内事件只能触发一次,与服务器端的限流 (Rate Limit) 类似。代码实现重在开锁关锁 timer=timeout; timer=null。节流可以比作过红绿灯,每等一个红灯时间就可以过一批。
// 方式1: 使用时间戳
function throttle1(fn, wait) {
let time = 0;
return function () {
let _this = this;
let args = arguments;
let now = Date.now();
if (now - time > wait) {
fn.apply(_this, args);
time = now;
}
};
}
// 方式2: 使用定时器
function thorttle2(fn, wait) {
let timer;
return function () {
let _this = this;
let args = arguments;

if (!timer) {timer = setTimeout(function () {timer = null;fn.apply(_this, args);}, wait);
}

};
}

写在最后

CSDN话题挑战赛第1期

  • 活动详情地址:https://marketing.csdn.net/p/bb5081d88a77db8d6ef45bb7b6ef3d7f

前端面试常问的问题(必须掌握)相关推荐

  1. 2019前端面试常问

    面试项目简介: Vue:hash(散列算法)DOM Diff算法(React) Node.js https://www.cnblogs.com/DCL1314/p/7903085.html 路由传参: ...

  2. web前端面试常问问题一(肝货)

    目录 1.什么是盒子模型?盒子模型分为哪几种?如何计算? 2.描述cookies,sessionStorage和localStorage的区别? 3.行内元素有哪些?块级元素有哪些? 空(void)元 ...

  3. 前端面试常问的水平居中和垂直居中方法(高频面经)

    面试和常用的居中方法 水平方向上 针对inline, 内联块inline-block, 内联表inline-table, inline-flex元素及img,span,button等元素. text_ ...

  4. 前端面试常问的题目(持续更新中)

    1.闭包问题 什么是闭包?答:"闭包就是能够读取其他函数内部变量的函数 造成闭包的原因?答: 解决方法?答:可以使用let.立即执行函数 闭包可以实现什么?可以访问局部变量.可以保护变量不受 ...

  5. 大厂前端面试都问些什么问题?入职爱奇艺年薪48万,面试经验总结

    前言 "金九银十"跳槽季,又到了面试求职的高峰期.好多小伙伴都会跳槽去找工作.如果你不跳槽,也建议把这篇文章看完,毕竟金九银十之后,就是金三银四了,总是逃不掉的? 你在面试的时候, ...

  6. 前端面试常见面试题及答案

    前端面试常见面试题及答案 h5新特性 ES6新特性 vuex的理解,组成以及原理介绍 前端常用框架 h5新特性 html5总的来说比html4多了十个新特性,但其不支持ie8及ie8以下版本的浏览器 ...

  7. 测开工程师-面试常问测试用例

    测开工程师-面试常问测试用例 一.网络测试的一般流程 二.弱网功能测试 四.微信红包测试 五.无网状态测试 三.微信朋友圈点赞测试 六.登陆界面测试 七.直播APP测试 八.微信搜索界面测试 九.水杯 ...

  8. java8 垃圾收集_面试官:怎么做JDK8的垃圾收集器的调优(面试常问)

    看着面试官真诚的眼神,心中暗想看起来年纪轻轻却提出如此直击灵魂的问题.擦了擦额头上汗,我稍微调整了一下紧张的情绪,对面试官说: 在jdk8中有serial收集器.parallel收集器.cms收集器. ...

  9. GET 和 POST 的区别(重要,面试常问)

    GET 和 POST 的区别(重要,面试常问) 1.GET 在浏览器回退时是无害的,而 POST 会再次提交请求. (get:不会再次发送请求:post:浏览器会继续向URI发送请求) 2.GET 产 ...

  10. 前端面试被问到性能优化该肿么办!

    性能优化1 前端面试被问到性能优化该肿么办! 1.1 页面重构怎么操作? 网站重构:在不改变外部行为的前提下,简化结构.添加可读性,而在网站前端保持一致的行为. 也就是说是在不改变UI的情况下,对网站 ...

最新文章

  1. python伪装浏览器什么意思_用python2和python3伪装浏览器爬取网页
  2. [poj2311]Cutting Game_博弈论
  3. iframe高度自适应的6个方法
  4. js 数组转带空格字符串
  5. Servlet(2) 三个域对象
  6. CentOS7|Redhat7挂载NTFS格式磁盘
  7. 基于FPGA/数字IC的数字信号处理课程
  8. Linux宝塔禁止国外ip访问服务器,屏蔽国外ip访问网站代码(亲测有效)
  9. 遭遇应用程序正常初始化失败
  10. java ftp上传失败_java ftp上传失败怎么办
  11. 民科微服务小程序怎么注册_民科微服务小程序app个人端认证下载-民科微服务小程序登录官方入口下载v2.4最新版_289手游网...
  12. 搭档之家:哭唧唧!暗地较劲得不偿失,美团暂停支付宝后被无情反超
  13. PHP入门需要多久?
  14. 关于Android studio Translation插件提示“更新 TKK 失败,请检查网络连接”问题
  15. win7系统没有计算机睡眠状态,如何解决win7系统无法进入睡眠状态
  16. 输入十个国名 要求按字母顺序输出C语言,用C语言编程实现国家名称按序输出,要求键盘输入五个国家的名字,按字母顺序排列打印输出。...
  17. React Native 入门实战视频教程(36 个视频)
  18. killall 命令的用法
  19. #幻方#明汯#九坤#鸣石#天演#进化论#佳期#量化研究员#C++#量化#量化私募#量化企业#量化投资#量化基金#机器学习#量化市场#量化期权#量化交易岗#量化数据岗#量化运维#量化可转债研究员#深
  20. C#学习之面象对象继承练习(二)

热门文章

  1. 主数据管理之二:主数据管理系统的功能组件
  2. 计算机监理培训计划,监理人员培训计划书.doc
  3. Java之将GB2312编码转化为汉字
  4. 「 OptiTrack」搭建动作视觉运动捕捉系统教程
  5. Ubuntu20.04 libcef笔记
  6. 树上战争(HDU - 2545)
  7. win7访问服务器共享文件夹提示没有权限,win7系统无法访问共享文件夹提示权限不足的解决方法...
  8. ShaderForge - 纹理逐步消失
  9. 轻松搞出一个云盘项目(一),一般人我不告诉哦。
  10. Web前端开发之CSS学习笔记5—溢出、浮动、层叠