1、说一下你前端遇到的最大的问题、坑,并说明你是如何解决的?比如js异常报错、样式混乱、甚至真机环境下直接空白页怎么办?
(其实面试官希望得到的答复是一个真实场景和解决思路,进而探测我有多少料,然而我回答了非常笼统)
我的回答: 开发和学习过程中如果遇到问题通常会查看手册,如果手册也没办法解决的话,我会上google/stack overflow/官方github,查看是否有相同的提问,如果还是不行的话我会直接查看源代码解决。
总结:显然我没有提出一个场景,解决的方法也非常的笼统。面试官可能会觉得你的水平连“坑”都没有遇过。
新答案:
http://www.zhihu.com/question/35323603#4544
我最近一段时间在学习vuejs并且尝试做一个运动类、减肥类、体育类的产品。因为我本身比较胖,我比较喜欢玩转这类APP。对这类APP比较了解并且功能上来说比较简单适合实战、在整个开发的过程我了大幅度的使用vue的组件化和数据驱动的特性。就功能而言一切都很顺利,但在处理其中一个路由模块时,我为了实现源生IOS优雅的转场和过度。感觉身体都被掏空了。在之前(还没有使用任何js框架时)我已经实现过类似的优雅转场效果了。但是是基于两个div之间,通过css的postion、tranfrom配合js控制时间轴等方式实现的。
因为目前这些前端js框架的路由原理,其实无非是利用hash截取,然后将某个页面通过js读取并且加载进当前页面的某个位置。vuejs提供了两种路由加载方式、一是先进后出,二是先出后进。无论是哪一种,中间必定有一段空白页的时期、官方的DEMO中使用了淡出淡入的动画效果,所以能避免这种尴尬、但却无法解决我的需求。
经过一番折腾我找到两个解决方案:
1、使用Div模式(直接将资源加载到网页中,或者预加载、异步加载配合loading也可以实现优雅转场)
2、不使用动画,也算是为了照顾安卓4.0以下的真机环境
但后来我浏览别人github项目时看到类似的解决方案,是通过路由 + flux + css3 + 组件通讯解决的。(该项目是Vue0.7.使用的是v-transtion + vuex + css3 + $emit来实现)
于是我研究了原理并且运用到我的项目中解决了
2、既然你说你喜欢组件化开发,请说明一下什么是组件化开发,他和普通的开发有什么区别,你是怎么把html css img font在js中加载结合起来的?你知道这些的原理吗?
(这么问主要是判断我是否道听途说、信手拈来的信息。而事实上根据我的回答,我发现我确实是道听途说的……fuck!!!)
1、和普通的开发有什么区别(避开了什么是组件化开发)?:
我的回答:譬如说用jquery开发,写很小的一些功能就需要占据很大的一页(篇幅)并且每次开发都需要重复写一次,如果使用reactjs的话可以封装到我的库给我和团队的人调用,就会很舒服。
2、你是怎么把html css img font在js中加载结合起来的?:
我支支吾吾并且沉默了半天。然后说了一个致命的答案:是通过webpack + babel 的第三方组件支持,就可以require <css文件>进来了。之后通过reactjs的createClass创建虚拟DOM来和html结合。在前端页面按需加载js就可以引用了。
3、你知道这些原理吗?
我的回答:require <css>文件的原理是通过node读取css文件,然后将该css内容通过js嵌入到网页中去。(我言下之意是譬如通过jquery的append将style拼接插入到html中)
总结:我已经不想总结了,回答的什么乱七八糟的。老老实实回去学习吧~~~
3、毕竟你有两年的开发经验了。那如果现在让你负责一个前端项目,
你打算
如何构建你的开发环境?
如何选择开发框架的?
如何搭配调试环境?
如何搭配测试环境(单元测试)?
如何上线部署?
如何确保在上线之后舒服的扩展和调试?
(我是有一年半开发经验,但我对现代化前端开发仅仅处于入门阶段,如果你让我负责这不是作死吗?尽管我单挑过一些项目,但那是在二线三线城市的东莞,随随便便应付了事,和深圳的可能完全不一样、我要如何回答才能死的不要太惨呢???)
我的回答:支支吾吾+沉默,~~~~~~我压根没有回答
总结:当时我真的很想起身鞠躬说声谢谢,然后拿走简历上阳台。然而他继续问了N个问题,总之就是不让你死的太痛快……
4、如果你遇到一个问题(bug),是如何快速定位的?使用什么工具调试并且快速定位的?如果是已经上线的app项目呢,如果是需要调用API数据的场景呢?
(面试官希望得知你用过什么调试工具,事实上我在网上看过不少调试工具,然而最后依然选择浏览器F12、或者火狐firebug调试。这显然不是正确答案。正确答案应该是一个工具名)
1、如何快速定位错误?
我的回答:看代码、根据经验定位;(面试官摇头:如果每次出错都看代码太慢了,如果能通过经验定位的错误就不算错误了)
2、使用什么工具调试?
我的回答:用浏览器F12、firebox的firebug来调试。(面试官摇头,这不是他想要得到的答案)
3、如果是已经上线的app项目呢?
我的回答:我会在本地拷贝搭建一个项目,模拟已经上线的项目。出了问题我模拟真实环境、真实数据就可以定位错误了。
4、如果是需要调用API数据的场景呢?
(事实上,上述的本地调试环境就是专门用来模拟API数据场景的,如果不是数据的问题可能就算API对接的问题了,然而我还是继续了我的回答)
我的回答:我用过远程调试,是当时和安卓同事开发混合APP时给我用的,通过电脑和手机插线联通,之后就可以在pc上通过谷歌浏览器F12调试了,但我说不出该工具的名称;(面试官依然摇头……)
总结:呵呵!!!!!
最后:
最后面试官翻了翻我的简历表示我对web前端了解还太少,很尴尬的说几句客气话,我连忙起身说麻烦你和谢谢你之类的话眼
面试官据说是腾讯出来的、通过对话得知他对全栈工程师不信赖也不推荐(除了阿里出来的全栈工程师)。临走前很客气的搭肩送我到电梯门口,
建议我如果真心喜欢web前端开发,应该好好学习方法论(即理论),在面试过程中应该形成自己的一套开发理论和流程。