我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 2381|回复: 17

[其他] 回顾自己三次失败的面试经历

[复制链接]
  • TA的每日心情
    无聊
    前天 09:45
  • 签到天数: 84 天

    [LV.6]常住居民II

    1万

    主题

    8213

    回帖

    5万

    积分

    三级逆天

    积分
    53738

    终身成就奖特殊贡献奖原创先锋奖金点子奖优秀斑竹奖宣传大使奖

    发表于 2017-11-16 16:19:45 | 显示全部楼层 |阅读模式

    马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

    您需要 登录 才可以下载或查看,没有账号?立即注册

    ×

                                   
    登录/注册后可看大图



    前言

    时间的齿轮已经来到了2017年的11月份,距离2018年仅仅还剩下不到两个月的时间。站在这个时间点上,我对自己之前三次失败的面试经历做了一次深度回顾。
    可能很多小伙伴会问,为什么要去回顾失败的面试经历呢?
    因为在互联网+时代,成功的案例可以借鉴,但是不可复制;失败的案例可以引以为戒,但是不可重蹈覆辙。你按照成功者的步骤一步一步走,最后不一定会成功;但如果你按照失败者的步骤一步一步走,结局注定会失败。
    我在这里写出当年我失败的经历,算是对自己做一个总结,也是为了提醒后来者,一入前端深似海,坑多坑少自己踩,避免走上闰土哥的老路。
    所以,接下来,正文从这开始~




    说起第一次失败的面试经历,是在我13年刚刚毕业的时候。那时我正在海投简历,认真找工作。当初应聘的是一家规模不算大的小公司,进去之后,面试官看都没看我一眼,给我丢下一句话就忙他的去了。
    他原话的意思是说,让我用jQuery写个轮播图效果,给我提供的条件是,一台没有联网的笔记本电脑,和本地下载好的jQuery的API文档。
    当时刚从培训班学出来的我,html和css基础还算扎实,但对jquery的api熟练程度还是有所欠缺的。因为之前在培训班学习切静态页面的时候,碰到轮播图效果一般都会用网上别人写好的插件。但我还是硬着头皮去尝试着写了写。
    过了几分钟后,我静态页面的布局写出来了,但是jquery的轮播效果还是没整出来。当时的我,知道通过的胜算几乎为零,但还是尽力争取了一下,跟面试官说,我U盘里有我自己的作品,你要不要看一下。面试官此时还是目不转睛的盯着他的笔记本屏幕,边看边说,你自己带来的作品,是不是自己写的也不一定,面试题最能说明问题等,听他巴拉巴拉说了一堆。
    结果可想而知,我被面试官刷下来了。
    回去之后,我便开始研究,如何用jquery去实现轮播图的效果。在这里,我简单地说下,当时很多购物网站(比如说淘宝京东)都会添加商品的图片轮播效果。轮播图作为一个公司首页最重要的推广方式,由于其相对于静态页面的动态滚动,使其更容易吸引客户的眼球。
    现在想想,轮播图的原理其实十分简单。它是利用人眼的视觉差,通过移动每张图片的left值,产生一种动态滚动的效果。废话不多讲,直接上代码:

                                   
    登录/注册后可看大图

    记住,写任何JQ交互效果,都是先构建好布局,然后才开始JQ处理,DOM操作。
    在这里,节点的构建其实没什么好讲的,CSS样式也很简单,这里就不贴出代码了。简单说下,每个li下图片的显示与隐藏,都是通过它的display属性来设定。左右切换则是采用图片li浮动,父层元素ul的宽度为总图片宽度(也就是li 的宽度乘以li的个数),ui相对外层父元素绝对定位,并设定为超出的部分要隐藏。然后当想切换到某个index 的图片时,则采用修改ul的left值来实现。比如显示第一张图片初始定位left值为0,要想显示第二张图则将left值修改为-400px即可。
    页面已经构建完毕,接下来就是JQ的操作。我们直接贴出代码:

                                   
    登录/注册后可看大图


                                   
    登录/注册后可看大图

    在这段代码中,我们先是用变量存储了当前索引值和图片总数,然后定义了一个定时器seInterval函数,里面的逻辑是,如果当前index值小于图片总数减一,就让它自增++;如果大于的话,就让当前index值初始化为0。
    然后为左右箭头添加了hover和click事件,在这里调用了两个函数,一个是重置定时器函数autoChangeAgain(),一个是图片切换处理函数changeTo()。当点击左右箭头或者是自动轮播的时候,我们都会调用animate()函数,通过修改left 值产生动态滚动的效果。最后就是给li控制按钮(小圆点或者是小长条)绑定事件处理函数,当鼠标移入清除定时器,反之则启动定时器。
    大概的原理便是如此,所以说,轮播图最简单也最困难,图要张张轮着播,还要丝滑无缝隙。自此,我才明白了,面试官为何会让应聘者二话不说,先来写一个轮播图效果,因为麻雀虽小,五脏俱全,这里面涉及到了很多知识点,如果你能写出来,证明你对JQ的API的熟练程度还是可以的,而且也有一定的逻辑性。起码从侧面反映出,你是一个合格的初级前端攻城狮。




    我的第二段失败的面试经历,说起来也挺巧,还是跟JS轮播图有关。不过这次换成了用原生JavaScript来编写。照样,我还是因为没有写出来而被pass掉了。后来想想,其实,逻辑和JQ是一样的,只不过是换成了JS。还是先直接贴出代码:

                                   
    登录/注册后可看大图


                                   
    登录/注册后可看大图


                                   
    登录/注册后可看大图


                                   
    登录/注册后可看大图


                                   
    登录/注册后可看大图

    看看这JS的代码量,还是有些冗杂,不过思路还是模仿JQ的实现思路。换汤不换药,代码里备注已经很详细了,这里就不一一阐述了。
    很显然,这次面试的难度已经提升了一个台阶,考察的是面试者对原生JS的熟练程度,以及逻辑性。相对的,这次的面试岗位的薪水也是相对要高点。如果这个能写出来的话,我觉得你的JS正在进阶,而你也正在进阶为一个专业的JSer。此时,距离中级前端攻城狮就不远了。




    俗话说,无巧不成书。关于我第三次面试失败的经历,依然是与JS轮播图有关。不过这次面试,却给我留下了一个比较深刻的印象。

                                   
    登录/注册后可看大图

    这是我去年的一次面试,给我发面试邀请的公司是思特奇(这也算是在电信行业名声在外的互联网大厂了,如果有不了解的可以上百度百科)。思特奇在太原高新区的办公地点可以说是很高大上,整整一层都是技术开发人员,一排排A面亮着银色苹果logo的MacBook Pro甚是晃眼,给人一种浓厚的程序猿文化。
    这次的机试题,还是那个绕不过去的JS轮播图的实现,不过这次却是让我用面向对象的思想去实现,据说这是技术总监临时的想法,这也是我后来才知晓的。当然了,我这次面试的薪水又拔高了一个台阶。
    基于面向对象的轮播图,看似比面向过程要繁琐了很多,而且对于一个轮播图来说,也没必要。但面试官想要考察的是应聘者对于面向对象编程的熟练程度,看看你的前端编程能力是否达到了他们公司业务开发的水平。
    很显然,这次的机试题打了我个措手不及。
    正如后来我拜读的JS红皮书里第六章写的,面向对象的程序设计,首先要创建一个Object实例,定义一个Slider构造器。然后在Slider的prototype原型上定义各种方法,这样做的好处是可以很方便的实现轮播图的效果,减少代码的冗余,同时避免了变量命名的冲突问题。
    现在需要我们先来捋一下思路,分析一下构造器里需要的属性:
    初始化所有的样式操作
    显示在对应的容器操作
    鼠标进入事件
    自动播放事件
    在这些基本的事件中,我们需要注意调用的顺序,如创建在初始化之前,我们可以把一些通用的属性放到原型链中来编写,这样的好处是减少了变量空间的占用和多次访问属性的结果。
    过程中遇到的问题:
    1.其中的this指代问题:这里的解决办法是在鼠标进入之前的函数中缓存一下var that = this。 这样就可以访问属性了。
    2.图片轮播判断:向左点击的时候, 如果当前的索引值大于零,让它执行自减操作,如果不大于0 就让他等于对应图片长度-1;
    向右点击的时候,当前的索引值小于它对应的轮播图片的长度-1,执行自加1操作,超过图片轮播长度时,索引值等于0。
    这次基于对象的代码就不给大家贴出来了,留给你们做个实践。当然,这次思特奇面试之旅,最后也是以失败告终,这也是我离进大厂最近的一次。


    后记

    分享了这么多面试经历,其实,我最想跟大家分享的是,无论你想走多远,你都需要不断的走下去。前端最精华的部分便是原生的JS,也只有JS是前端开发中算得上编程的一门语言,这也是我们前端工程师技术分层的重要指标,也能体现出你的代码能力,开发水平。所以,不是说你会多少个gulp、grunt、webpack这样的构建打包工具,会多少个angular、react、vue等框架的脚手架搭建,会多少个sass less stylus等这样的css预处理器,会多少个npm bower cnpm等这样的包管理器你就牛逼,永远记住,JavaScript才是我们前端工程师的核心竞争力!
    希望这片文章的推送,能直抵你的内心。
    回复

    使用道具 举报

    该用户从未签到

    2

    主题

    614

    回帖

    0

    积分

    二级逆天

    积分
    0

    终身成就奖

    QQ
    发表于 2017-12-31 10:52:59 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    1

    主题

    856

    回帖

    0

    积分

    二级逆天

    积分
    0

    终身成就奖

    QQ
    发表于 2018-1-22 16:14:23 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    8

    主题

    2158

    回帖

    0

    积分

    二级逆天

    积分
    0

    社区居民终身成就奖

    QQ
    发表于 2019-3-25 08:34:58 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    3

    主题

    4632

    回帖

    0

    积分

    PADS20200316初级班

    积分
    0

    终身成就奖特殊贡献奖原创先锋奖优秀斑竹奖

    发表于 2019-8-23 08:16:27 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    283

    回帖

    0

    积分

    二级逆天

    积分
    0

    终身成就奖

    QQ
    发表于 2019-8-27 08:52:51 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    1

    主题

    70

    回帖

    0

    积分

    二级逆天

    积分
    0

    终身成就奖原创先锋奖

    发表于 2019-8-27 08:54:26 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    3

    回帖

    0

    积分

    一级逆天

    积分
    0

    终身成就奖

    发表于 2019-8-29 17:01:20 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    1

    主题

    6699

    回帖

    4

    积分

    二级逆天

    积分
    4

    社区居民终身成就奖特殊贡献奖原创先锋奖优秀斑竹奖

    QQ
    发表于 2019-9-18 07:19:01 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    2

    主题

    187

    回帖

    0

    积分

    二级逆天

    积分
    0

    终身成就奖特殊贡献奖原创先锋奖

    发表于 2022-9-7 08:02:31 | 显示全部楼层
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    公告:服务器刚移机,
    大家请不要下载东西。
    会下载失败


    Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

    本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

    ( 闽ICP备2024076463号-1 ) 论坛技术支持QQ群171867948 ,论坛问题,充值问题请联系QQ1308068381

    平平安安
    TOP
    快速回复 返回顶部 返回列表