膜拜大神面试题

2024-03-26 00:30
文章标签 面试题 大神 膜拜

本文主要是介绍膜拜大神面试题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天去面了阿里巴巴广州UC总部的前端工程师职位,感觉这份笔试题还是出的挺有意思的,考完趁热反思一下自己做题过程的一些问题,稍作总结

如我一开始想的,笔试的题目果然没有考所谓的计算机网络,数据逻辑那些要太多去背的东西,下面列出的题目不按顺序,想到哪写到哪~有想法的欢迎在评论区指正

第一题

假设存在a数组,假定数组内的元素均为Number,a如果长度为0,则添加1,否则按先进先出原则去掉一个元素,考虑性能与代码长度(字符<30满分),尽量用最优的代码实现。

代码逻辑很简单

  1. return a.length>0?a.splice(0,1):a.push(1)

写到这里想到了一个很偏的性能优化,下标方式添加数组在chrome上比用push快43%,不过这里只有一个元素,无所谓啦~

第二题

一道比较有关闭包的题目,本来以为自己是对的...栽坑了(后面不记得有没有参数)

var func = (function(a){this.a = a;return function(a){a+=this.a;return a;}})(function(a,b){return a;}(1,2));func(4)

 

我开始的思路判断两个闭包是对的,后面想太多以为里面的第二个闭包function(x,y){return x+y}(2,3)应该会抛出一个错误然后被接收,然后数字加上一个不为数字的值等于NaN...天真了,抛开这点这只是一个简单的闭包,答案应该是5,可以复制到控制台上看一下输出

第三题

在一个body中插入十个<ul><li>第1项</li></ul>,考虑效率和性能

这里我本来想用DocumentFragment的方式来创建元素然后插入,不过想起之前看过的一篇文章提到在现代浏览器上已经对重流和重绘做出了延迟,性能已经不能有什么优化了,直接插入html更加高效。

var str='<ul>',$body;for(var i = 1;i<=10;i++){str+='<li>第'+i+'项</li>'}str+='</ul>'$body=typeof document.querySelectorAll=='function'?document.querySelectorAll('body')[0]:document.getElementsByTagName('body')[0];$body.innerHtml+=str;

 

第四题

创建一个长度为100的数组array,值等于其下标

so easy,不用push还是考虑下标性能更好

for(var i = 0;i<100;i++)array[i]=i

 

第五题

对上数组乱序排序

写得时候我用了两个random来操作,现在想想一个就够了

var i ,j,temp;
for(i =0;i<100;i++){j=Math.floor(Math.random()*100);temp=array[i];array[i]=array[j];array[j]=temp;
}

 

第六题

优雅的方式对前十个数组元素相加

优雅...想了想,可以用柯里化函数来做...测了一下又发现自己写错了,心疼(┬_┬)

function sum(x){function add(y){x+=yreturn add}add.toString=add.valueOf=function(){return x}return add
}
for(var i =0;i<10;i++)sum=sum(array[i])
console.log(sum)

 

第七题

列出你知道的继承父类的方式,以及平时你喜欢用的方式,有什么优点?

考察了面向对象编程的一些东西,笔试的时候我只想到了三种,列了两种,提了自己比较喜欢的一种

分别为拷贝继承(写得时候记成寄生模式...)和直接继承prototype,还有其他几种,感兴趣的可以自己查一下,还有通过空对象继承,我写了个extend的方法

function extend(Child, Parent) {var F = function(){};F.prototype = Parent.prototype;Child.prototype = new F();Child.prototype.constructor = Child;
}

 

最后提了一下TypeScript和ES6里面的Class

第八题

根据雅虎前端优化法则,对html,css,js,图片资源应该做出怎么样的处理

写得时候想不起雅虎定律,只记得刚学前端的时候看了下,后来的后来就不记得了...所以这题我随便扯了一些自己平时在部署前端上线前对资源做的处理,大体就是对资源文件的合并压缩混淆以及加载策略的选择,减少HTTP请求数量,spring图,内联图片转base64,gzip压缩,优化图片,对不同设备提供不同大小质量图片,提到了很多,不过少了一些服务端配置的东西

第九题

上面的流程能不能自动化?

我提到了webpack,systemjs等模块加载器来打包应用,或者使用像gulp,grunt,fls等前端自动化构建工具来配置自动化构建架构,不过还是少说了一点服务端的东西。

第十题

正则匹配 *.9game.cn,如在内容内容 http://www.9game.cn/home/page 内容内容 替换为 内容内容 <a>http://www.9game.cn/home/page</a> 内容内容

回来之后仔细想了想,写了下面三种

简单的写法我一开始的写法简单的写法

第十一题

如果上面的代码对性能要求很高,如何让其发布的时候错误率尽可能低,对代码质量做出有效性指标

我提到了引入PDD测试驱动,提高测试的覆盖率,还有多分支开发,避免在主分支上产生问题,出现问题也能及时回滚

第十二题

网页开发出现问题的时候你如何定位问题,中你常用的调试工具或者其他辅助工具

我开发的时候用的是chrome控制台调试定位问题,调试IE兼容性时用的是Edge新提供的调试工具,辅助工具如jshint代码质量保证以及开发Angular,React时还会用到对应的调试插件,还有就是在代码中打log。

第十三题

偏偏在本地测试页面完全正常,偏偏(出题人之幽默)上线网页的时候出现异常,如何来解决

我看到这个题目马上想起自己之前部署页面遇到的很多奇葩问题,有感而发写了自己认为比较合理的排查问题的顺序。

首先先查看一下服务器是否能正常启动,接口能否正常访问,静态资源是否正常加载,如果没有问题,这个时候我们可以看看控制台有什么比较隐蔽的报错没有(其实也没所谓隐蔽,通常来说在检验前面步骤的时候也会看到),根据错误来定位一下具体是什么问题,例如像我之前遇到的严格模式不能重复定义变量的问题~

如果控制台一片洁白,没有什么报错,资源也正常加载,这个时候你可能进入了某些奇怪的坑中了,面对这种疑难杂症,我一般采取试试google一下用到东西的关键词以及遇到的问题,或者请教一下前辈。

第十四题

解决回调地狱的方式,一句话概括一下优势

我提到了promise.then链式调用的方式,还有封装回调函数来精简回调的逻辑,最后也说了一下ES6中的yeild语句,用同步的语法写异步。

第十五题

总共十五道题~还有一题忘记了

整理完发现自己在几道有明确答案的题目上都错了,基础还是不够扎实,岌岌可危...求后续,我回去哭了(┬_┬)

转载于:https://www.cnblogs.com/ziyue1/p/5521977.html

这篇关于膜拜大神面试题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/846766

相关文章

荣耀嵌入式面试题及参考答案

在项目中是否有使用过实时操作系统? 在我参与的项目中,有使用过实时操作系统。实时操作系统(RTOS)在对时间要求严格的应用场景中具有重要作用。我曾参与的一个工业自动化控制项目就采用了实时操作系统。在这个项目中,需要对多个传感器的数据进行实时采集和处理,并根据采集到的数据及时控制执行机构的动作。实时操作系统能够提供确定性的响应时间,确保关键任务在规定的时间内完成。 使用实时操作系统的

一些其他面试题

阿里二面:那你来说说定时任务?单机、分布式、调度框架下的定时任务实现是怎么完成的?懵了。。_哔哩哔哩_bilibili 1.定时算法 累加,第二层每一个格子是第一层的总时间400 ms= 20 * 20ms 2.MQ消息丢失 阿里二面:高并发场景下引进消息队列有什么问题?如何保证消息只被消费一次?真是捏了一把汗。。_哔哩哔哩_bilibili 发送消息失败

zookeeper相关面试题

zk的数据同步原理?zk的集群会出现脑裂的问题吗?zk的watch机制实现原理?zk是如何保证一致性的?zk的快速选举leader原理?zk的典型应用场景zk中一个客户端修改了数据之后,其他客户端能够马上获取到最新的数据吗?zk对事物的支持? 1. zk的数据同步原理? zk的数据同步过程中,通过以下三个参数来选择对应的数据同步方式 peerLastZxid:Learner服务器(Follo

java常用面试题-基础知识分享

什么是Java? Java是一种高级编程语言,旨在提供跨平台的解决方案。它是一种面向对象的语言,具有简单、结构化、可移植、可靠、安全等特点。 Java的主要特点是什么? Java的主要特点包括: 简单性:Java的语法相对简单,易于学习和使用。面向对象:Java是一种完全面向对象的语言,支持封装、继承和多态。跨平台性:Java的程序可以在不同的操作系统上运行,称为"Write once,

【Kubernetes】常见面试题汇总(三)

目录 9.简述 Kubernetes 的缺点或当前的不足之处? 10.简述 Kubernetes 相关基础概念? 9.简述 Kubernetes 的缺点或当前的不足之处? Kubernetes 当前存在的缺点(不足)如下: ① 安装过程和配置相对困难复杂; ② 管理服务相对繁琐; ③ 运行和编译需要很多时间; ④ 它比其他替代品更昂贵; ⑤ 对于简单的应用程序来说,可能不

【附答案】C/C++ 最常见50道面试题

文章目录 面试题 1:深入探讨变量的声明与定义的区别面试题 2:编写比较“零值”的`if`语句面试题 3:深入理解`sizeof`与`strlen`的差异面试题 4:解析C与C++中`static`关键字的不同用途面试题 5:比较C语言的`malloc`与C++的`new`面试题 6:实现一个“标准”的`MIN`宏面试题 7:指针是否可以是`volatile`面试题 8:探讨`a`和`&a`

Laravel 面试题

PHP模块 PHP7 和 PHP5 的区别,具体多了哪些新特性? 性能提升了两倍 结合比较运算符 (<=>) 标量类型声明 返回类型声明 try…catch 增加多条件判断,更多 Error 错误可以进行异常处理 匿名类,现在支持通过new class 来实例化一个匿名类,这可以用来替代一些“用后即焚”的完整类定义 …… 了解更多查看文章底部链接 PHP7 新特性 为什么 PHP

【吊打面试官系列-Redis面试题】说说 Redis 哈希槽的概念?

大家好,我是锋哥。今天分享关于 【说说 Redis 哈希槽的概念?】面试题,希望对大家有帮助; 说说 Redis 哈希槽的概念? Redis 集群没有使用一致性 hash,而是引入了哈希槽的概念,Redis 集群有 16384 个哈希槽,每个 key 通过 CRC16 校验后对 16384 取模来决定放置哪个槽, 集群的每个节点负责一部分 hash 槽。

【Kubernetes】常见面试题汇总(一)

目录 1.简述 etcd 及其特点? 2.简述 etcd 适应的场景? 3.简述什么是Kubernetes? 4.简述 Kubernetes和 Docker的关系? 1.简述 etcd 及其特点? (1)etcd 是Core0s 团队发起的开源项目,是一个管理配置信息和服务发现(service discovery)的项目,它的目标是构建一个高可用的分布式键值(keyvalue)数据

2018秋招C/C++面试题总结

博主从8月中旬开始大大小小面试了十几家公司,至今也许是告一段落吧,希望后面会有好结果,因此总结记录一些C/C++方向常见的问题。和大家一起学习! 参考了互联网的各种资源,自己尝试归类整理,谢谢~ 一、C和C++的区别是什么? C是面向过程的语言,C++是在C语言的基础上开发的一种面向对象编程语言,应用广泛。 C中函数不能进行重载,C++函数可以重载 C++在C的基础上增添类,C是一个结构