虽说我们很多时候前端很少有机会接触到算法。大多都交互性的操作,然而从各大公司面试来看,算法依旧是考察的一方面。实际上学习数据结构与算法对于工程师去理解和分析问题都是有帮助的。如果将来当我们面对较为复杂的问题,这些基础知识的积累可以帮助我们更好的优化解决思路。下面罗列在前端面试中经常撞见的几个问题吧。 Q1 判断一个单词是否是回文? 回文是指把相同的词汇或句子,在下文中调换位置或颠倒过来,产生首尾回环的情趣,叫做回文,也叫回环。比如 mamam redivider . 很多人拿到这样的题目非常容易想到用for 将字符串颠倒字母顺序然后匹配就行了。其实重要的考察的就是对于reverse的实现。其实我们可以利用现成的函数,将字符串转换成数组,这个思路很重要,我们可以拥有更多的自由度去进行字符串的一些操作。 function checkPalindrom(str) { return str == str.split('').reverse().join(…

什么是跨域? 跨域是指一个域下的文档或脚本试图去请求另一个域下的资源,这里跨域是广义的。 广义的跨域: 资源跳转: A链接、重定向、表单提交 资源嵌入:<link>、<script>、<img>、<frame>等dom标签,还有样式中background:url()、@font-face()等文件外链 脚本请求: js发起的ajax请求、dom和js对象的跨域操作等 其实我们通常所说的跨域是狭义的,是由浏览器同源策略限制的一类请求场景。 什么是同源策略? 同源策略/SOP(Same…

今天 在逛掘金的时候 看到一片关于程序猿的简历的 话题,然后顺藤摸瓜 结果 跑到了 知乎上的一篇 问答 《请问文凭对一个程序员的影响有多大?》 然而 我发现很多人 都会很自然的 把没有 文凭 和 没上过学 画上等号; 没文凭 ≠ 没上过学 首先“没文凭等于没上过学” 这本身就是个伪命题,没上过学等于没文凭,这句话没毛病,但是没文凭 真的等于没上过学么? 我觉得这个问题 我们要从两个方面来看 1、你真的没上过大学/大专 这种人 怎么说呢。…

【转】原文:http://igeekbar.com/igeekbar/post/477.htm        当我们想要搜索某些内容时,我们第一个想到的就是打开Google、百度或必应这类的搜索引擎。但针对有些内容,却是这些常规搜索引擎无法获取到的,那就是隐藏在深网的内容。据不完全统计,深网的信息量为表层网络的500倍。那么,深网主要都包含了些什么内容呢?其实,深网主要包括的都是些,例如需要某些条件如注册、付费,才能访问的内容,如数据库和某些服务等。而常规搜索引擎通常只会对静态网页进行抓取,而对于这些存储在数据库中的内容,对其而言几乎是不可见的。其次,当我们使用Google时,Google还可能对我们的活动轨迹进行跟踪。…

原文地址:兴趣部落 前端人脸识别 首先需要的是人脸识别,这个一听就觉得高大上的东西原理并不深奥,无非是用人的面部特征规则对图像进行匹配和识别,这项工作前端虽然可以实现,但前端实现基本就只能依据内置规则库进行匹配,这个库的质量就决定了识别质量,而通常更成熟的方案是引入机器学习,让程序不断自我修正和提高,进一步提高识别率,机器学习的前端库倒是也有,但把这两者结合起来的还没发现,因此对前端人脸识别的准确率不要报太高期望。 现有的前端人脸识别库不算多,这里我们选择的是效果相对好点的trackingjs,这个类库功能非常强大,库如其名,它可以完成各种追踪类的图像处理任务,人脸识别只是其众多功能之一,而且通过选配插件,还可以精确识别眼睛、鼻子等五官的位置,貌似稍微折腾一下也可以实现美图秀秀的效果。 这里我们只用trackingjs实现面部识别,初始化一个面部识别任务的代码如下: var tracker = new tracking.ObjectTracker(['face']);// 实例化 tracker.…

作为一名现代前端,除了要掌握html,css,js 以及一系列乱七八糟框架之外,还得懂得如何抓包改包。 当然,常规的网站或者自主开发的我们往往使用 chrome或者 firefox等浏览器自带的 开发者工具就能解决。 但是往往会有一些特殊情况,比如 非SPA型网站,当接口请求出错等情况发生后 自动跳回登陆页,这就很蛋疼了,我们就无法得知出错原因等,当然还有很多别的奇奇怪怪的情况我们的 浏览器开发者工具无法满足我们(比如:抓取只能在微信里打开的网页)。 这时就需要额外的抓包工具了: win用户:fiddler mac用户:Charles 关于 fiddler的相关用法 百度有很多,我们就不多说了。 今天我们聊聊 iphone Charles 抓包。…

原文地址:https://zhuanlan.zhihu.com/p/28937831 Javascript是一门很吊的语言 本文秉承着:你看不懂是你SB,我写的代码就要牛逼。 1.单行写一个评级组件 "★★★★★☆☆☆☆☆".slice(5 - rate, 10 - rate); 定义一个变量率是1到5的值,然后执行上面代码,看图 才发现插件什么的都弱爆了 2.如何装逼用代码骂别人SB (!(~+[])+{})[--[~+""][+[]]*[~+[]] + ~~!+[]]+({}+[])[[~!+[]]*~+[]] 3.如何用代码优雅的证明自己NB console.log(([][[]]+[])[+!![]]+([]+{})[!+[]+!![]]) 4.JavaScript错误处理的方式的正确姿势 try { something…

奇技淫巧:指过于奇巧而无益还让人着迷的技艺与制品。 And(与) & Or(或) | Exclusive Or(异或) ^ Not(非) ~ 位运算符,我们在日常js开发中其实 说真的,很少会用到,甚至可以说 有相当一部分的 javascripter完全不知道 位运算符 但是我们日常中肯定常常会用到 &&、||、! 这么几个符号,它们看起来跟位运算符很像,但是 它们并不是位运算符,它们只运用在 ‘boolean 布尔值’运算中 曾几何时我曾疑惑过 为什么 我们 在 js中…

起源 html5之前的网页,都是无连接,必须联网才能访问,这其实也是web的特色,这其实对于PC是时代问题并不大,但到了移动互联网时代,设备终端位置不再固定,依赖无线信号,网络的可靠性变得降低,比如坐在火车上,过了一个隧道(15分钟),便无法访问网站,这对于web的伤害是很大的,比如对于 《ecmascript合集》这样的为阅读而生的页面。 html5便引入了cache manifest 文件。那么什么是cache manifest呢,接下来会讲到。 什么是Cache Manifest 首先manifest是一个后缀名为minifest的文件,在文件中定义那些需要缓存的文件,支持manifest的浏览器,会将按照manifest文件的规则,像文件保存在本地,从而在没有网络链接的情况下,也能访问页面。 当我们第一次正确配置app cache后,…

必备工具: coding 或者 github (这将是你博客的服务器) Hexo 或者 jekyll (这是你博客的系统,当然还有很多别的 可以自行百度/谷歌 :“ 静态博客 ”) git (这可是个很重要的玩意儿没有这个你搞不定你的博客) nodejs (这尼玛也很重要) sublime 或者 atom 或者 vscode 再不济 你就 记事本吧!(这玩意重不重要 其实还好,主要是用来写 博客的,就是个编辑工具,当然 如果你是个码农 那你一定认识它们真正的作用,这些软件的官网都是 鹰语哦…