commonjs是什么_想要从事前端岗位,需要学什么

48fdada2d62de890378e4bf60569f443.png

越是简单的东西,越是容易普及的东西,越是能够兴盛昌盛,经久不衰。Web前端开发除了在Web上,还可以出现在桌面软件上,各种物联网端,甚至操作系统都可以通过前端来实现。

深圳大大小小上百家互联网企业,人才供不应求是常态。

对于零基础,Web前端的行业门槛低,入行较快。

学习前端的小伙伴在增加!

但是,从事前端岗位,到底需要学习什么?你做对了吗?

d78e05433f34602ef70a40b7a935aae8.gif

Q: css 动画和 js 动画的差异

1. 代码复杂度,js 动画代码相对复杂一些

2. 动画运行时,对动画的控制程度上,js 能够让动画,暂停,取消,终止,css动画不能添加事件

3. 动画性能看,js 动画多了一个js 解析的过程,性能不如 css 动画好

Q: XSS 与 CSRF 两种跨站攻击

1. xss 跨站脚本攻击,主要是前端层面的,用户在输入层面插入攻击脚本,改变页面的显示,或则窃取网站 cookie,预防方法:不相信用户的所有操作,对用户输入进行一个转义,不允许 js 对 cookie 的读写

2. csrf 跨站请求伪造,以你的名义,发送恶意请求,通过 cookie 加参数等形式过滤

3. 我们没法彻底杜绝攻击,只能提高攻击门槛

Q: 事件委托,目的,功能,写法

1. 把一个或者一组元素的事件委托到它的父层或者更外层元素上

2. 优点,减少内存消耗,动态绑定事件

3. target 是触发事件的最具体的元素,currenttarget是绑定事件的元素(在函数中一般等于this)

4. JavaScript 事件委托详解

● ● ●

Q: 线程,进程

1. 线程是最小的执行单元,进程是最小的资源管理单元

2. 一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程(一般情况)

3. 一个进程对应多个线程最为常见,Linux、Windows等是这么实现的。其实理论上这种关系并不是一定的,可以存在多个进程对应一个线程,例如一些分布式操作系统的研究使用过这种方式,让线程能从一个地址空间转移到另一个地址空间,甚至跨机器调用不同的进程入口(感谢AlienZHOU补充)

Q: 负载均衡

1. 当系统面临大量用户访问,负载过高的时候,通常会使用增加服务器数量来进行横向扩展,使用集群和负载均衡提高整个系统的处理能力

2. 服务器集群负载均衡原理

Q: 使用 JavaScript 代理实现简单的数据绑定

ES Proxy 允许你拦截对任何对象属性或方法的调用。首先,每当底层绑定对象发生变更时,都应更新 DOM。

▼▼▼

Q: 解释 JavaScript 的并发模型

你是否熟悉 Elixir、Clojure、Java 等其他编程语言中使用的并发模型?事件循环、任务队列、调用栈、堆等。

Q: “new”关键字在 JavaScript 中有什么作用?

在 JavaScript 中,new 是用于实例化对象的运算符。

另外,请注意 [[Construct]] 和 [[Call]]。

Q: JavaScript 中有哪些不同的函数调用模式?请详细解释。

有四种模式,函数调用、方法调用、.call() 和.apply()。

f4139a598ba09c3a520fda2ca6c92ec3.png

Q: javascript 中常见的内存泄露陷阱

1. 内存泄露会导致一系列问题,比如:运行缓慢,崩溃,高延迟

2. 内存泄露是指你用不到(访问不到)的变量,依然占居着内存空间,不能被再次利用起来

3. 意外的全局变量,这些都是不会被回收的变量(除非设置 null 或者被重新赋值),特别是那些用来临时存储大量信息的变量

4. 周期函数一直在运行,处理函数并不会被回收,jq 在移除节点前都会,将事件监听移除

5. js 代码中有对 DOM 节点的引用,dom 节点被移除的时候,引用还维持

6. JavaScript 中 4 种常见的内存泄露陷阱

Q: Promise 模拟终止

1. 当新对象保持“pending”状态时,原Promise链将会中止执行。

2. return new Promise(()=>{}); // 返回“pending”状态的Promise对象

Q: promise 放在try catch里面有什么结果

1. Promise 对象的错误具有冒泡性质,会一直向后传递,直到被捕获为止,也即是说,错误总会被下一个catch语句捕获

2. 当Promise链中抛出一个错误时,错误信息沿着链路向后传递,直至被捕获

● ● ●

Q: 网站性能优化

1. http 请求方面,减少请求数量,请求体积,对应的做法是,对项目资源进行压缩,控制项目资源的 dns 解析在2到4个域名,提取公告的样式,公共的组件,雪碧图,缓存资源

2. 压缩资源,提取公共资源压缩,提取 css ,js 公共方法

3. 不要缩放图片,使用雪碧图,使用字体图表(阿里矢量图库)

4. 使用 CDN,抛开无用的 cookie

5. 减少重绘重排,CSS属性读写分离,最好不要用js 修改样式,dom 离线更新,渲染前指定图片的大小

6. js 代码层面的优化,减少对字符串的计算,合理使用闭包,首屏的js 资源加载放在最底部

Q: js 自定义事件实现

1. 原生提供了3个方法实现自定义事件

2. createEvent,设置事件类型,是 html 事件还是 鼠标事件

3. initEvent 初始化事件,事件名称,是否允许冒泡,是否阻止自定义事件

4. dispatchEvent 触发事件

Q: angular 双向数据绑定与vue数据的双向数据绑定

1. 二者都是 MVVM 模式开发的典型代表

2. angular 是通过脏检测实现,angular 会将 UI 事件,请求事件,settimeout 这类延迟,的对象放入到事件监测的脏队列,当数据变化的时候,触发 $diget 方法进行数据的更新,视图的渲染

3. vue 通过数据属性的数据劫持和发布订阅的模式实现,大致可以理解成由3个模块组成,observer 完成对数据的劫持,compile 完成对模板片段的渲染,watcher 作为桥梁连接二者,订阅数据变化及更新视图

f05c6d8731a1c275ca8d825b53b60162.png

Q: 有没有去研究webpack的一些原理和机制,怎么实现的

1. 解析webpack配置参数,合并从shell传入和webpack.config.js文件里配置的参数,生产最后的配置结果。

2. 注册所有配置的插件,好让插件监听webpack构建生命周期的事件节点,以做出对应的反应。

3. 从配置的entry入口文件开始解析文件构建AST语法树,找出每个文件所依赖的文件,递归下去。

4. 在解析文件递归的过程中根据文件类型和loader配置找出合适的loader用来对文件进行转换。

5. 递归完后得到每个文件的最终结果,根据entry配置生成代码块chunk。

6. 输出所有chunk到文件系统。

▼▼▼

Q: ES6模块与CommonJS模块的差异

1. CommonJs 模块输出的是一个值的拷贝,ES6模块输出的是一个值的引用

2. CommonJS 模块是运行时加载,ES6模块是编译时输出接口

3. ES6输入的模块变量,只是一个符号链接,所以这个变量是只读的,对它进行重新赋值就会报错

Q: 模块加载AMD,CMD,CommonJS Modules/2.0 规范

1. 这些规范的目的都是为了 JavaScript 的模块化开发,特别是在浏览器端的

2. 对于依赖的模块,AMD 是提前执行,CMD 是延迟执行

3. CMD 推崇依赖就近,AMD 推崇依赖前置

对于上面提到的这些问题,不知道各位小伙伴们是否掌握牢固了。

如果在阅读文章的过程中,发现有些知识点无论是记忆还是实战过程中并不是特别熟练的,那就需要多花点精力去温故知新了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值