前端之路与面试总结

最初毕业进了一个国企性质的公司,一年半后跳槽进入了真正的互联网行业真正的开始接触前端开发行业。在这个公司一年半的时间里主要用angular开发,期间读了javascript权威指南,对js的原型链和继承实现认真的看了很久。基础打的还算牢靠,项目中熟悉了gulp,webpack,对前端live-reload,文件压缩,减少请求例如:雪碧图,dataUrl,http压缩到js中运用模版解析,MD5去缓存等等有了进一步了解。现在我又刚刚跳槽了,薪资也提高的还算满意,还得到了高级前端工程师的头衔(虽然卵用不大,但是对自己激励不少)。在没跳槽之前,感觉自己很牛天天和同事互吹,但是裸辞之后,开始慌了觉着自己这么菜,能找到工作吗。。然后面试了一个星期越来越有信心了,最后找到了还算满意的工作。每次面试遇到的问题也多少记录了下,分享下:

  1. react与angular的比较。
    angular在大公司真的好像不太受欢迎,大家都在用react和vue等。angular的功能大而全,是MVVM框架。脏检查是性能瓶颈,数据绑定被注册watch事件,并放到watch list中,发生变化时最少要触发两次digest来确保数据变化了,并且没有链索改变,digest最多触发10次就会报错了(说的不太清楚,可以自己研究下脏检查)。而react只是一个UI框架,和angular比不了,它可以搭配flux或redux使用,当然现在redux更主流。react的生命周期,虚拟DOM,redux的工作流等都可以了解下。
  2. 异步加载 defer 和 async的 理解与比较。
  3. 按需加载的实现与原理
  4. promise的理解及应用
  5. 事件委托,冒泡机制与捕获
  6. fetch的了解,如何实现timeout功能
  7. js实现template模版解析
  8. js实现类似@keyframe的渐变动画效果
  9. angular依赖注入原理
    依赖注入有两种实现方式:setter和constructor注入。angular采用后者。setter注入首先使用一个无参的构造函数构造对象,然后使用setter将依赖注入到新对象中。缺点是:并不知道对象间依赖关系,依赖解析由框架运行时完成。如果配置有遗漏,则运行时会报空引用错误。constructor注入:在构造对象时,将依赖的组件以参数形式传入构造函数。传入组件的依赖组件以相同的方式构造。确保了最顶端组件首先构造。该方式避免了依赖的遗漏。(之前文章提到过angular依赖注入的两种写法,一种写法可以方式压缩带来的参数名被改变的问题。)
  10. html生成template.js模版进行缓存,减少了html文件的请求。另外angular的template的加载原理。
  11. gulp我在项目中用到的有:(都了解下,可以学到不少。)
var gulp = require('gulp');
var server = require('gulp-server-livereload');
var less = require('gulp-less');
var templateCache = require('gulp-angular-templatecache');
var uglify = require('gulp-uglify');
var domSrc = require('gulp-dom-src');
var concat = require('gulp-concat');
var gulpSequence = require('gulp-sequence');
var htmlReplace = require('gulp-html-replace');
var autoprefixer = require('gulp-autoprefixer');
var imagemin = require('gulp-imagemin');
var cssmin = require('gulp-cssmin');
var urlAdjuster = require('gulp-css-url-adjuster');
var replace = require('gulp-replace');
var rev = require('gulp-rev');
var addStream = require('add-stream');
var revReplace = require('gulp-rev-replace');
var minifyHTML = require('gulp-minify-html');
var clean = require('gulp-clean');
var argv = require('yargs').argv;

13.rem,em,px的区别于用法。

14.当然js,css基础也很重要,新技术的了解也一定要到位。ES6,node,hybrid,SVG,甚至算法,V8引擎都会问到。。
基础题有:字符串倒序输出,数组去重,闭包及其应用,settimeout(,0)的应用,跨域的多种方式等。基础问题最好能说出2,3中实现方法。

另外,个人认为跳槽其实可以帮助你查缺补漏,找到自己的不足,不盲目自大,也能认清自己的水平,在市场中的价值定位,不妄自菲薄。前端技术比较琐碎,但是主流框架深入研究一个,就能找到满意的工作了~有一个面试官告诉我,研究框架没意思,要研究浏览器引擎,引擎才是前端人的操作系统,以后可以自己写框架给别人用。。。。感觉很牛逼的样子。希望文章对大家有帮助,跳到满意的公司,拿到高薪。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值