Comments (7)
3. 问:数组能够调用的函数有那些?
- push
- pop
- splice
- slice
- shift
- unshift
- sort
- find
- findIndex
- indexOf
- includes
- map/filter/reduce 等函数式编程方法
- 还有一些原型链上的方法:toString/valudOf
from fe-interview.
4. 问:说下对 JS 的了解吧
是基于原型的动态语言,主要独特特性有 this、原型和原型链。
JS 严格意义上来说分为:语言标准部分(ECMAScript)+ 宿主环境部分
语言标准部分
2015 年发布 ES6,引入诸多新特性使得能够编写大型项目变成可能,标准自 2015 之后以年号代号,每年一更
宿主环境部分
- 在浏览器宿主环境包括 DOM + BOM 等
- 在 Node,宿主环境包括一些文件、数据库、网络、与操作系统的交互等
from fe-interview.
5.抽象语法树(AST)
简单来说 ast 抽象语法树就是一个 JavaScript 对象,用来描述 js 源码。将 js 源码解析为 ast 抽象语法树包含两步:词法分析 和 语法分析。词法分析阶段把字符串形式的代码转换为 令牌(tokens)流。语法分析就是将词法分析生成的令牌转换成AST树。
AST的用途大致分为3类
- IDE使用,如代码风格检测(eslint等)、代码的格式化,代码高亮,代码错误等等
- 代码的混淆压缩
- 转换代码的工具。如webpack,rollup,各种代码规范之间的转换,ts,jsx等转换为原生js
from fe-interview.
6. rem 与 移动端适配
https://juejin.cn/post/6844903631993454600
from fe-interview.
前端鉴权
目前我们常用的鉴权有四种:
- HTTP Basic Authentication (HTTP基本认证,已经基本不用了)
- session-cookie
- Token 验证(包括JWT,SSO)
- OAuth(开放授权)
Token 概念
token是用户身份的验证方式,我们通常叫它:令牌。当用户第一次登录后,服务器生成一个token并将此token返回给客户端,以后客户端只需带上这个token前来请求数据即可,无需再次带上用户名和密码。
最简单的token组成:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,由token的前几位+盐以哈希算法压缩成一定长的十六进制字符串,可以防止恶意第三方拼接token请求服务器)。还可以把不变的参数也放进token,避免多次查库。
我们可以把Token想象成一个安全的护照。你在一个安全的前台验证你的身份(通过你的用户名和密码),如果你成功验证了自己,你就可以取得这个。当你走进大楼的时候(试图从调用API获取资源),你会被要求验证你的护照,而不是在前台重新验证。
验证流程
大概的流程是这样的:
- 客户端使用用户名跟密码请求登录
- 服务端收到请求,去验证用户名与密码
- 验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端
- 客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者 Local Storage 里
- 客户端每次向服务端请求资源的时候需要带着服务端签发的 Token
- 服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据
总的来说就是客户端在首次登陆以后,服务端再次接收http请求的时候,就只认token了,请求只要每次把token带上就行了,服务器端会拦截所有的请求,然后校验token的合法性,合法就放行,不合法就返回401(鉴权失败)。
Token优点与缺点
优点:
- Token 完全由应用管理,所以它可以避开同源策略. (Cookie是不允许垮域访问的,token不存在)
- Token 可以避免 CSRF 攻击(也是因为不需要cookie了)
- Token 可以是无状态的,可以在多个服务间共享
- Token 支持手机端访问(Cookie不支持手机端访问)
服务器只需要对浏览器传来的token值进行解密,解密完成后进行用户数据的查询,如果查询成功,则通过认证.所以,即使有了多台服务器,服务器也只是做了token的解密和用户数据的查询,它不需要在服务端去保留用户的认证信息或者会话信息,这就意味着基于token认证机制的应用不需要去考虑用户在哪一台服务器登录了,这就为应用的扩展提供了便利,解决了session扩展性的弊端。
缺点:
- 占带宽: 正常情况下token要比 session_id更大,需要消耗更多流量,挤占更多带宽.(不过几乎可以忽略)
- 性能问题: 相比于session-cookie来说,token需要服务端花费更多的时间和性能来对token进行解密验证.其实Token相比于session-cookie来说就是一个"时间换空间"的方案.
from fe-interview.
<div id="ul"></div>
<script>
var newFrag = document.createDocumentFragment();
var oUl = document.getElementById('ul');
for (var i = 0; i < 100; i++) {
var oLi = document.createElement('li');
newFrag.appendChild(oLi);
}
oUl.appendChild(newFrag);
</script>
使用createDocumentFragment()暂存,然后一次性添加字节点。
from fe-interview.
NodeJs反向代理-前端解决跨域问题的优雅方式
https://juejin.cn/post/7065973142891528205
from fe-interview.
Related Issues (20)
- 09. js原型及原型链 HOT 1
- 10. js中的基本类型和引用类型
- 11. webpack的作用及核心配置 HOT 10
- 12.闭包,new,箭头函数 HOT 1
- 13.获取对象属性的几种方法
- 14.解释下Promise与Promise.all HOT 1
- 15.JS中的面向对象,class,prototype和__proto__ HOT 1
- 16. mvc与mvvm的区别
- 17.前端性能优化的常用手段
- 18. http网络请求基本知识 HOT 2
- 19. Vue常见面试题 HOT 1
- 20.跨域及解决方案 HOT 2
- 21. Symbol的应用场景?
- 23.前端排序算法汇总 HOT 1
- 24. js实现二叉树的前序、中序、后续、层序遍历
- 25.前端常见算法 HOT 2
- 26. Set,Map,Symbol
- 27.html5语义化标签 HOT 1
- 28.常见css基础面试题
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from fe-interview.