前端面试题笔记(1)

来源:互联网 发布:温州龙湾网络问政 编辑:程序博客网 时间:2024/05/27 19:26

在接下来几篇博客中,我将会每天列举一些前端面试问题,并且根据自己的情况作答,题目来源是GitHub上的前人给出的前端面试题库。

题目非常多,并不能保证每道题都给出较为准确的答案,但是我会尽可能的作答。同时,题目中给出了很多开放性问题,这种问题我也只能根据我写博客的时候想到的比较好的回答方式进行作答。如果有高手有更好的回答方式方法,真的很希望得到指正。特别是如果您是前端大牛,比较有经验的工程师,看到了这种题目,也特别希望您能从自己的出发点,从面试官的出发点,给出期待我们这些初学者给出的答案。我是前端初学者,希望能够通过这种方式来学习(原因是马上要校招,逃……),如果出现纰漏,希望多多指正,更希望不吝赐教!!!

Part 1. 常见问题,篇

你在昨天/本周学到了什么?

开放性问题。我想到的是,我最近正在《Clean Code》这本书,这本书中介绍了很多关于整洁代码,代码风格方面的很多经验,虽然不能说是教科书,但是我觉得每一条都是前人在软件开发领域的一些“血的教训”。作为一个初学者,我认为有太多需要去学习的了。我觉得虽然每一个坑只有自己踩过才会深有体会,但是站在巨人的肩膀上是能走的更远的。另外,最笨的方法往往是最好的方法,书中提到过,要让自己每一次编程结束时,代码比开始编程时更易懂,更漂亮,更Clean,是每个程序保证越来越好的基础。这种方法虽然在一时会比较麻烦,比较痛苦,但是长远来看,这能让自己写的代码越来越好,越来越快的最好方式。

这道题我第一时间想到的不是前端开发的知识,有两点考虑吧,第一是因为我怕我提到最近在学的一些前端知识被面试官继续抓住往下问,我觉得面试很像是聊天,我遇到的几次面试经常是一个话题带出另一个话题,并且最近学到的很有可能理解还不深刻,如果回答的不好可能会减印象分吧。第二是因为提出这些比较经典的书籍,应该能让面试官有一点儿好印象吧,看这种书能体现出我对编程的一些个人期待,一些提升自身的努力等等吧。

编写代码的哪些方面能够使你兴奋或感兴趣?

开放型题目。起初让我最兴奋的事情是,编程实现的功能。以前我做过很多嵌入式开发的项目,这些项目能够看到自己的代码工作时,小车跑起来,能避障,能寻迹,能找到点燃的蜡烛,这种兴奋感很强烈。后来接触到前端开发时,看到的是各种很漂亮的前端展示效果,各种越来越让人眼前一亮的新技术。慢慢的随着我自己编写代码的逐渐增多,并且对JS的基础进行了一些梳理之后,我更加期待的是在项目中能够实现一些很精巧的结构,甚至语法语句等等。并且我也越来越觉得好的代码的赏心悦目的重要性。现在觉得最看重的还是努力让自己编写出“好”的代码最让我兴奋。

这道题完全是根据自己的经历经验写出的一些感受,希望大牛有所赐教。

你最近遇到过什么技术挑战?你是如何解决的?

开放性问题。最近主要是学习了mongodb的一些知识,我对这块儿比较感兴趣,因为我挺想自己搭建一些开发项目,一个完整的项目必须要有服务器端的知识,而其中一种对前端开发人员比较友好的实现方式是通过nodejs+express+mongoose+mongodb的方式来实现后端的搭建的。因为在语言方面不需要额外的一些学习,并且我比较看好node的发展,所以第一选择的就是这种开发方式吧。在学习这块儿知识的时候遇到过一些新概念,第一眼看到的时候比较生涩,我就把各种各样的例程一个一个的自己动手实现出来。慢慢的熟悉一点儿之后再回过头来,逐渐的就能理解了。我的方法比较笨,也很痛苦,但是这种方法心里比较踏实。另外,在学习的过程中,各种各样的博客有各种各样的实现方式,我发现很多都已经过时了,毕竟前端是发展很快的,各种各样的技术更新也很快,因此也不能太依赖于博客等等知识,更好的方式也许还是尽快的理解,然后依赖于官网进行学习吧。

写这篇文章的时候,其实我是在准备面试的各种各样的知识。所以并没有遇到什么技术挑战,因为最近并没有做过项目。但是毕竟是面试问题,必须要作答,只能“编”一些答案了。

在制作一个网页应用或网站的过程中,你是如何考虑其 UI、安全性、高性能、SEO、可维护性以及技术因素的?

在UI方面,在一个较为完善的项目组中,UI的设计应该是产品经理和UI设计师的工作,对于前端来说更重要的是实现。我个人更喜欢的是简洁大方的设计风格,我自己的一些项目中也更多的是这种小而美风格的产品,因为这些项目中都是我们大家一起来讨论设计风格。
在安全性方面,要注意的应该就是用户信息的保存了,对于用户名密码等内容的加密,如果涉及到订单信息,就会涉及到订单信息的安全,验证码等一些二次验证的方式,来方式XSRF攻击等等。对于一些输入控件应该有XSS攻击等等的预防等等。
在高性能方面,提高加载速度,提高渲染速度是最重要的。例如JS代码的压缩,某些特殊情况下需要的异步JS加载等等。包括一些简单的技巧需要注意,例如CSS要放在head中,这样可以只渲染一次。script要放在body最后,这样不会阻塞页面渲染。图片可以先加载小图,根据需要加载大图。多图的情况可以使用下拉动态加载等等技术来实现。
在SEO(搜索引擎优化)方面,要多使用关键字,例如HTML5中提出了很多语义性的关键字。语义化书写html代码,符合W3C标准。此外,重要内容不要通过JS输出,尽量放在html中,尽量少用iframe,图片加上alt
在可维护性方面,我觉得提高代码的可读性是最重要的内容,因为好的代码可读性,不仅仅能够提升代码质量,而且对于大项目的健康发展有决定性作用。

这道题完全没有经验,因为我并没有一些比较完善的项目开发经历,这些考虑的东西目前对我来说完全是在项目中没有考虑过的东西。但是根据面试方法,还是应该说出一些相关的,自己了解到的知识。(注:上面提到的很多东西我只是知道有这种解决方法,并没有编程实现过,所以也并不知道这样回答到底合不合适,毕竟没有做过的东西说出来还是有点儿不自信)

请谈谈你喜欢的开发环境。

我最喜欢用的是VSCode来写代码,调试当然是Chrome,移动端的调试我经常使用的是PC端开了localhost之后,把手机连上电脑的IP地址同步展示,还是很方便的。

个人经验,感觉这题不是很严重,所以较为随便说的,不过根据我看到的一些文章,都强烈建议千万不要说用Dreamweaver和notepad,虽然我没用过,但是希望给看到的小伙伴提个醒

你最熟悉哪一套版本控制系统?

我用的最多的还是GitHub,自己的个人代码都托管在上面了。中文的托管平台曾经用过coding.net,但是觉得不想太乱,就全放在GitHub上面了。

如果问道了这道题,应该接下来就会问一些版本控制的指令了吧。
git clone
git push
git pull
git commit
git merge
……
关键是我对这块用的确实不熟

原创粉丝点击