当前位置:首页 » 网页前端 » 阿里人才测评题前端方向
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

阿里人才测评题前端方向

发布时间: 2022-12-13 03:46:12

Ⅰ 新手学习前端,学完后可以做什么

前端前景是很不错的,像前端这样的专业还是一线城市比较好,师资力量跟得上、就业的薪资也是可观的,学习前端可以按照路线图的顺序,

0基础学习前端是没有问题的,关键是找到靠谱的前端培训机构,你可以深度了解机构的口碑情况,问问周围知道这家机构的人,除了口碑再了解机构的以下几方面:

1. 师资力量雄厚

要想有1+1>2的实际效果,很关键的一点是师资队伍,你接下来无论是找个工作还是工作中出任哪些的人物角色,都越来越爱你本身的技术专业前端技术性,也许的技术专业前端技术性则绝大多数来自你的技术专业前端教师,一个好的前端培训机构必须具备雄厚的师资力量。

2. 就业保障完善

实现1+1>2效果的关键在于能够为你提供良好的发展平台,即能够为你提供良好的就业保障,让学员能够学到实在实在的知识,并向前端学员提供一对一的就业指导,确保学员找到自己的心理工作。

3. 学费性价比高

一个好的前端培训机构肯定能给你带来1+1>2的效果,如果你在一个由专业的前端教师领导并由前端培训机构自己提供的平台上工作,你将获得比以往更多的投资。

希望你早日学有所成。

Ⅱ Web前端发展前景及就业方向

Web前端的市场十分火爆,这一切可以说是归功于现在互联网+社会,下面随北大青鸟web前端培训专家一起来了解详情。


前景


HTML5技术已经日趋成熟,Html5是移动互联网前端的主流开发语言,目前还没有一个前端的开发语言能取代
html5的位置,所以说,无论你是做手机网站还是在手机app应用,前端的样式都是html5开发的。通过手机与电脑上网的使用率来看,从事html5相关开发工作,就业前景肯定是一片光明。对于web来说是非常有前景的,现在的网站开发都往移动设备上转移,html5是众望所归。


就业方向


(1)资深WEB前端工程师


这个方向算是一个WEB前端最基本的选择了。目前web前端面临的问题是从业人员泛滥,但真正掌握技术的人才十分稀缺。所以这就需要我们WEB前端工程师耐得住寂寞,专心研究技术,不要被外界打扰我个人比较推荐这个职业发展方向,因为,在这个方向下,只要足够耐心、厚积薄发,成功的概率是非常高的。


(2)资深WEB架构师


说功利点儿,这个方向可以得到更多的薪资。由于我们拥有最为广泛的WEB相关知识沉淀,使得我们更加容易成为一名架构师。这个职业发展方向不如第一种来得平滑,主要是作为一名架构师不得不学习:后端技术、DBA、Platform等内容,而这种学习通常需要实际操刀做项目,不是自己在家里写两个Demo就好的,这就势必会遭遇一段时间的低潮期。但只要你坚持,未来前途无限光明。


(3)自己创业


其实,自己创业是最好的道路、也是成功率最低的道路,挑战和机遇并存。这里,作为一个前端技术人员,需要将自己的视野更多放在行业的动态、产业链的动态、相关产品领域的动态,把关注细节的优势继续保持,同时,增强自己把控一个产品乃至一个公司命运的能力。


薪资待遇


小贴士


总结各大就业网站对web前端的就业要求(点击链接直接报名HTML、CSS、JavaScript免费课程:#/13sg7D#rd)


1.精通html和css,能制作符合W3C标准的静态页面


2.精通JavaScript编程,对面向对象编程思想有深刻理解


3.精通主流Javascript库/框架jQuery


4.理解并掌握JavaScript语言核心技术DOM、BOM有Javascript性能优化经验


5.对浏览器兼容性有深入的研究,精通各种浏览器问题


6.了解Backbone.js、AngularJs等MVC框架并有实际项目开发经验


7.了解#等服务器后台技术和拥有一定的C#编程能力者优先


8.对交互体验、可用性、用户体验有一定程度的理解


9.有良好的责任心和团队合作能力、能承受较大的压力

Ⅲ 阿里巴巴的素质测评测的是什么

阿里巴巴的素质测评测通过量表、面试、评价中心技术、观察评定、业绩考核等多种手段综合测评人才素质的一种活动。

素质是测评的基本对象,测评即测量和评定,测量是测评主体运用多种测量技术和统计方法对测评者的功能或行为进行量化描述的过程。

素质测评虽然离不开测量与评定,但并不是测量与评定的机械相加,而是一种建立在对个体特征信息“测”与“量”基础上的分析判断。

组织架构

2012年7月23日,阿里巴巴集团对业务架构和组织进行调整,从子公司制调整为事业群制,成立淘宝、一淘、天猫、聚划算、阿里国际业务、阿里小企业业务和阿里云共七个事业群。

2013年1月10日,阿里巴巴集团对业务架构和组织将进行调整,成立25个事业部,具体事业部的业务发展将由各事业部总裁(总经理)负责。新体系由战略决策委员会(由董事局负责)和战略管理执行委员会(由CEO负责)构成。

Ⅳ 前端发展方向 职业规划

端的发展前景是很明朗并且是非常具有潜力的,端开发是创建Web页面或app等前端界面呈现给用户的过程,通过HTML,CSS及JavaScript以及衍生出来的各种技术、框架、解决方案,来实现互联网产品的用户界面交互。主要发展前景从以下几个方面说明:

近几年各类互联网应用产品层出不群,Web前端开发工程师作为实现前端展示的重要一步也越来越受到了企业的青睐,招聘需求呈现递增趋势,从前程无忧招聘数据可以看出,Web前端相关岗位24小时之内需求量高达4W+。

从就业方向来看,Web前端工程师所能选择的就业岗位也是非常对样的,网页制作、H5开发、小程序开发、小游戏开发、APP开发等都是可以去选择的,所以Web前端就业前景还是非常可观的。

Web前端岗位空缺大,供不应求,那么薪资待遇同样呈现不断上涨趋势,从第三方统计平台职友集中可以看到北京web前端工程师平均工资:¥ 17280/月,按工作经验统计,其中应届生工资¥12920,,3-5年工资¥18030,5-10年工资¥23440。从以上数据不难看出,Web前端就业薪资普遍高于其他行业。

亲爱的小伙伴,前端技术大家庭欢迎你的到来:https://sourl.cn/7jnzJp。在这里,不仅有志同道合的朋友,指导人生的老师,更有看不完的技术教程随你挑!心动吗?想学吗?那就动动你的小手手,加入我们吧!

Ⅳ Web前端发展前景及就业方向怎么样

在互联网行业,前端有WEB前端、HTML前端等,随着互联网技术发展,就业方向也有很多。web前端的就业方向有web架构师、web前端工程师、HTML前端开发工程师、网页设计师等等。
HTML前端开发
与Web前端开发不同的是,使用HTML5不仅仅可以开发前端,还有网页游戏,手机APP,使用浏览器进行3D渲染等一系列建立在HTML5标准与搭载其标准浏览器上的开发,而未来可能会有更多的功能分支并入HTML5标准。web前端工程师
这个方向是目前从事Web前端开发的主要就业方向
Web架构师
薪资普遍比较高,技术要求高,掌握多种技能,包括:后端技术、DBA、Platform等等,甚至包括网站优化SEO技术。
数据方向
数据研发这个是在Web开发的基础上用数据附能,懂可视化的一定是有前端能力的,懂hadoop的一定java玩的溜,属于Web开发的拓展方向。
大前端方向
比如阿里,在大量实践rn和weex;由于公司内部安卓/ios式微,一定程度上,前端把ios和安卓收编了,统称大前端(还有node)。
图形学方向
前端自然是与图形学有千丝万缕的联系,除了上面提到了可视化,还有相关3d引擎的开发工作。做这一行要求也非常高了,图形学相关的算法,3d引擎的开发,这都需要图形学相关知识。

Ⅵ 学完web前端从事哪个方向比较好啊

给大家列举Web前端的六个就业方向和工作内容。

1、资深Web架构师

这个方向,既兼顾了工作的单纯性、又能够减少实际Coding的工作量,能腾出更多时间。在国内,Web前端工程师遇到较多的情况是总是反复编写着同样的代码,总是面对着同样的技术和产品,容易感觉枯燥。但正是由于这样较为广泛的Web相关知识的沉淀,使得我们更加容易成为一名架构师。

虽说这种职业发展方向不如第一种来得平滑,但是作为一名架构师在学习后端技术、DBA、Platform等内容,将其丰富的知识应用到需要实际中的项目操作,不再局限自己在家里随便写写两个Demo。即便在学成这段时间,势必会遭遇一段时间的阵痛期。但对于一个大局观好、悟性好、知识面广的前端工程师而言,这依旧是值得推荐的荣光之路。

2、资深Web前端工程师

这个方向算是一个Web前端最基本的选择了,但能够把自己的专业做到极致,能一辈子就在一个专业领域不断学习和积累。对所有的Web前端工程师来说,朝着这个职业发展方向,只要足够耐心、厚积薄发,成功的概率是非常高的。

3、网页设计师

网页设计师可以将平面设计中的审美观点套用到网站设计上面来(其区别是动态网页的制作是平面设计不能达到的,它是一种审美方式的延伸)。网页如门面,小到个人主页,大到大公司、大的政府部门以及国际组织等在网络上无不以网页作为自己的门面。当点击到网站时,首先映入眼帘的是该网页的界面设计,如内容的介绍、按钮的摆放、文字的组合、色彩的应用、使用的引导等等。这一切都是网页设计的范畴,都是网页设计师的工作。而且具备精通Photoshop,Coreldraw,Frontpage,Dreamweaver等多项网页设计工具的能力。

4、PHP程序员

PHP技术人才,正迎合了目前的互联网的发展趋势。而且PHP作为非常优秀的、简便的Web开发语言,和Linux,Apache,MySQL紧密结合,形成LAMP的开源黄金组合,不仅降低使用成本,还提升了开发速度,满足最新的互动式网络开发的应用,这使得php软件工程师成为一个发展迅速的职业。

5、自己创业

其实,自己创业是最好的道路,但也是成功率最低的道路,挑战和机遇并存。作为一个前端技术人员,需要将自己的视野更多放在行业的动态、产业链的动态、相关产品领域的动态,把关注细节的优势继续保持,同时,增强自己把控一个产品乃至一个公司命运的能力。

6、转岗管理或其他

这条职业道路和Web前端技术之路关系不大。

Ⅶ web前端开发的就业方向有哪些

Web前端的就业面很广,选择的岗位有:前端开发工程师、资深前端开发工程师、网站重构工程师、前端架构师等等。

并且随着前端开发技术发展,移动端应用、小程序、H5游戏出现。前端开发应用场景不断拓展。走向更专业和工程化的发展。

互联网的飞速发展过后,后面会逐渐走向平稳,不合格的滥竽充数的开发者会逐渐被市场淘汰,毕竟一边是前端开发在未来有着巨大的发展前景和优势,另一边则是互联网企业日益提高的需求门槛,你如果不努力,那就别怪人家选择更好的人代替你。

Ⅷ Web前端岗位面试题有哪些

前端面试题汇总,基本上会有四大类问题,具体如下:
一、HTML

1、Doctype作用?严格模式与混杂模式如何区分?它们有何意义?

2、HTML5 为什么只需要写 <!DOCTYPE HTML>?
3、行内元素有哪些?块级元素有哪些? 空(void)元素有那些?
4、页面导入样式时,使用link和@import有什么区别?
5、介绍一下你对浏览器内核的理解?
6、常见的浏览器内核有哪些?
7、html5有哪些新特性、移除了那些元素?如何处理HTML5新标签的浏览器兼容问题?如何区分 HTML 和 HTML5?
8、简述一下你对HTML语义化的理解?
9、HTML5的离线储存怎么使用,工作原理能不能解释一下?
10、浏览器是怎么对HTML5的离线储存资源进行管理和加载的呢?
11、请描述一下 cookies,sessionStorage 和 localStorage 的区别?
12、iframe有那些缺点?
13、Label的作用是什么?是怎么用的?(加 for 或 包裹)
14、HTML5的form如何关闭自动完成功能?
15、如何实现浏览器内多个标签页之间的通信? (阿里)
16、webSocket如何兼容低浏览器?(阿里)
17、页面可见性(Page Visibility)API 可以有哪些用途?
18、如何在页面上实现一个圆形的可点击区域?
19、实现不使用 border 画出1px高的线,在不同浏览器的Quirksmode和CSSCompat模式下都能保持同一效果。
20、网页验证码是干嘛的,是为了解决什么安全问题?
21、tite与h1的区别、b与strong的区别、i与em的区别?

二、css

1、介绍一下标准的CSS的盒子模型?与低版本IE的盒子模型有什么不同的?

2、CSS选择符有哪些?哪些属性可以继承?
3、CSS优先级算法如何计算?
4、CSS3新增伪类有那些?
5、如何居中div?如何居中一个浮动元素?如何让绝对定位的div居中?
6、display有哪些值?说明他们的作用。
7、position的值relative和absolute定位原点是?
8、CSS3有哪些新特性?
9、请解释一下CSS3的Flexbox(弹性盒布局模型),以及适用场景?
10、用纯CSS创建一个三角形的原理是什么?

11、一个满屏 品 字布局 如何设计?

三、常见兼容性问题?


  1. 1、li与li之间有看不见的空白间隔是什么原因引起的?有什么解决办法?
    2、经常遇到的浏览器的兼容性有哪些?原因,解决方法是什么,常用hack的技巧 ?
    3、为什么要初始化CSS样式。
    4、absolute的containing block计算方式跟正常流有什么不同?
    5、CSS里的visibility属性有个collapse属性值是干嘛用的?在不同浏览器下以后什么区别?
    6、position跟display、margin collapse、overflow、float这些特性相互叠加后会怎么样?
    7、对BFC规范(块级格式化上下文:block formatting context)的理解?
    8、CSS权重优先级是如何计算的?
    9、请解释一下为什么会出现浮动和什么时候需要清除浮动?清除浮动的方式
    10、移动端的布局用过媒体查询吗?
    11、使用 CSS 预处理器吗?喜欢那个?
    12、CSS优化、提高性能的方法有哪些?
    13、浏览器是怎样解析CSS选择器的?
    14、在网页中的应该使用奇数还是偶数的字体?为什么呢?
    15、margin和padding分别适合什么场景使用?
    16、抽离样式模块怎么写,说出思路,有无实践经验?[阿里航旅的面试题]
    17、元素竖向的百分比设定是相对于容器的高度吗?
    18、全屏滚动的原理是什么?用到了CSS的那些属性?
    19、什么是响应式设计?响应式设计的基本原理是什么?如何兼容低版本的IE?
    20、视差滚动效果,如何给每页做不同的动画?(回到顶部,向下滑动要再次出现,和只出现一次分别怎么做?)
    21、::before 和 :after中双冒号和单冒号 有什么区别?解释一下这2个伪元素的作用。
    22、如何修改chrome记住密码后自动填充表单的黄色背景 ?
    23、你对line-height是如何理解的?
    24、设置元素浮动后,该元素的display值是多少?(自动变成display:block)
    25、怎么让Chrome支持小于12px 的文字?
    26、让页面里的字体变清晰,变细用CSS怎么做?(-webkit-font-smoothing: antialiased;)
    27、font-style属性可以让它赋值为“oblique” oblique是什么意思?
    28、position:fixed;在android下无效怎么处理?
    29、如果需要手动写动画,你认为最小时间间隔是多久,为什么?(阿里)
    30、display:inline-block 什么时候会显示间隙?(携程)
    31、overflow: scroll时不能平滑滚动的问题怎么处理?
    32、有一个高度自适应的div,里面有两个div,一个高度100px,希望另一个填满剩下的高度。
    33、png、jpg、gif 这些图片格式解释一下,分别什么时候用。有没有了解过webp?
    34、什么是Cookie 隔离?(或者说:请求资源的时候不要让它带cookie怎么做)
    35、style标签写在body后与body前有什么区别?

    四、JavaScript

    1、介绍JavaScript的基本数据类型。
    2、说说写JavaScript的基本规范?
    3、JavaScript原型,原型链 ? 有什么特点?
    4、JavaScript有几种类型的值?(堆:原始数据类型和 栈:引用数据类型),你能画一下他们的内存图吗?
    5、Javascript如何实现继承?
    6、Javascript创建对象的几种方式?
    7、Javascript作用链域?
    8、谈谈This对象的理解。
    9、eval是做什么的?
    10、什么是window对象? 什么是document对象?
    11、null,undefined的区别?
    12、写一个通用的事件侦听器函数(机试题)。
    13、[“1”, “2”, “3”].map(parseInt) 答案是多少?
    14、关于事件,IE与火狐的事件机制有什么区别? 如何阻止冒泡?
    15、什么是闭包(closure),为什么要用它?
    16、javascript 代码中的”use strict”;是什么意思 ? 使用它区别是什么?
    17、如何判断一个对象是否属于某个类?
    18、new操作符具体干了什么呢?
    19、用原生JavaScript的实现过什么功能吗?
    20、Javascript中,有一个函数,执行时对象查找时,永远不会去查找原型,这个函数是?
    21、对JSON的了解?
    22、[].forEach.call($$("*"),function(a){ a.style.outline="1px solid #"+(~~(Math.random()*(1<<24))).toString(16) }) 能解释一下这段代码的意思吗?
    23、js延迟加载的方式有哪些?
    24、Ajax 是什么? 如何创建一个Ajax?
    25、同步和异步的区别?
    26、如何解决跨域问题?
    27、页面编码和被请求的资源编码如果不一致如何处理?
    28、模块化开发怎么做?
    29、AMD(Moles/Asynchronous-Definition)、CMD(Common Mole

    Definition)规范区别?
    30、requireJS的核心原理是什么?(如何动态加载的?如何避免多次加载的?如何 缓存的?)
    31、让你自己设计实现一个requireJS,你会怎么做?
    32、谈一谈你对ECMAScript6的了解?
    33、ECMAScript6 怎么写class么,为什么会出现class这种东西?
    34、异步加载的方式有哪些?
    35、documen.write和 innerHTML的区别?
    36、DOM操作——怎样添加、移除、移动、复制、创建和查找节点?
    37、.call() 和 .apply() 的含义和区别?
    38、数组和对象有哪些原生方法,列举一下?
    39、JS 怎么实现一个类。怎么实例化这个类
    40、JavaScript中的作用域与变量声明提升?
    41、如何编写高性能的Javascript?
    42、那些操作会造成内存泄漏?
    43、JQuery的源码看过吗?能不能简单概况一下它的实现原理?
    44、jQuery.fn的init方法返回的this指的是什么对象?为什么要返回this?
    45、jquery中如何将数组转化为json字符串,然后再转化回来?
    46、jQuery 的属性拷贝(extend)的实现原理是什么,如何实现深拷贝?
    47、jquery.extend 与 jquery.fn.extend的区别?
    48、jQuery 的队列是如何实现的?队列可以用在哪些地方?
    49、谈一下Jquery中的bind(),live(),delegate(),on()的区别?
    50、JQuery一个对象可以同时绑定多个事件,这是如何实现的?
    51、是否知道自定义事件。jQuery里的fire函数是什么意思,什么时候用?
    52、jQuery 是通过哪个方法和 Sizzle 选择器结合的?(jQuery.fn.find()进入Sizzle)
    53、针对 jQuery性能的优化方法?
    54、Jquery与jQuery UI有啥区别?
    55、JQuery的源码看过吗?能不能简单说一下它的实现原理?
    56、jquery 中如何将数组转化为json字符串,然后再转化回来?
    57、jQuery和Zepto的区别?各自的使用场景?
    58、针对 jQuery 的优化方法?
    59、Zepto的点透问题如何解决?
    60、jQueryUI如何自定义组件?
    61、需求:实现一个页面操作不会整页刷新的网站,并且能在浏览器前进、后退时正确响应。给出你的技术实现方案?
    62、如何判断当前脚本运行在浏览器还是node环境中?(阿里)
    63、移动端最小触控区域是多大?
    64、jQuery 的 slideUp动画 ,如果目标元素是被外部事件驱动, 当鼠标快速地连续触发外部元素事件, 动画会滞后的反复执行,该如何处理呢?
    65、把 Script 标签 放在页面的最底部的body封闭之前 和封闭之后有什么区别?浏览器会如何解析它们?
    66、移动端的点击事件的有延迟,时间是多久,为什么会有? 怎么解决这个延时?(click 有 300ms 延迟,为了实现safari的双击事件的设计,浏览器要知道你是不是要双击操作。)
    67、知道各种JS框架(Angular, Backbone, Ember, React, Meteor, Knockout…)么? 能讲出他们各自的优点和缺点么?
    68、Underscore 对哪些 JS 原生对象进行了扩展以及提供了哪些好用的函数方法?
    69、解释JavaScript中的作用域与变量声明提升?
    70、那些操作会造成内存泄漏?
    71、JQuery一个对象可以同时绑定多个事件,这是如何实现的?
    72、Node.js的适用场景?
    (如果会用node)知道route, middleware, cluster, nodemon, pm2, server-side rendering么?
    73、解释一下 Backbone 的 MVC 实现方式?
    74、什么是“前端路由”?什么时候适合使用“前端路由”? “前端路由”有哪些优点和缺点?
    75、知道什么是webkit么? 知道怎么用浏览器的各种工具来调试和debug代码么?
    76、如何测试前端代码么? 知道BDD, TDD, Unit Test么? 知道怎么测试你的前端工程么(mocha, sinon, jasmin, qUnit..)?
    77、前端templating(Mustache, underscore, handlebars)是干嘛的, 怎么用?
    78、简述一下 Handlebars 的基本用法?
    79、简述一下 Handlerbars 的对模板的基本处理流程, 如何编译的?如何缓存的?
    80、用js实现千位分隔符?(来源:前端农民工,提示:正则+replace)
    检测浏览器版本版本有哪些方式?
    81、我们给一个dom同时绑定两个点击事件,一个用捕获,一个用冒泡,你来说下会执行几次事件,然后会先执行冒泡还是捕获

Ⅸ web前端就业方向有哪些

Web前端在前几年网页制作,在那个时候我们仅仅只需要做好网页就可以了,但随着这个岗位的逐渐细化,HTML、CSS、Java的逐渐规范,网页制作已经不能完全涵盖这个岗位的所有职责。为了更为规范、职业化的称呼这个岗位,Web前端这个词也就因此而出现。Web前端除了包括了网页制作这个职能,同时还涵盖了很多其它的智能。比如:页面优化、网站兼容性、网站重构、页面交互等等。可以说只会网页制作技术已经完全无法满足这个岗位的需求了。
不过,虽然我们需要学习的内容变得更多了,但我们的就业方向却更加广泛了,现在只要公司需要建造属于自己的网站,那么他们就必须招聘一名甚至多名Web前端工程师,而除了这个外,Web前端工程师的就业之路还有很多。
1.资深web架构师
这个方向,既兼顾了工作的单纯性、又能够减少实际Coding的工作量,能腾出更多时间。在国内,web前端工程师遇到较多的情况是总是反复编写着同样的代码,总是面对着同样的技术和产品,容易感觉枯燥。但正是由于这样较为广泛的web相关知识的沉淀,使得我们更加容易成为一名架构师。
虽说这种职业发展方向不如第一种来得平滑,但是作为一名架构师在学习后端技术、DBA、Platform等内容,将其丰富的知识应用到需要实际中的项目操作,不再局限自己在家里随便写写两个Demo。即便在学成这段时间,势必会遭遇一段时间的阵痛期。但对于一个大局观好、悟性好、知识面广的前端工程师而言,这依旧是值得推荐的荣光之路。
2.资深web前端工程师
这个方向算是一个web前端最基本的选择了,但能够把自己的专业做到极致,能一辈子就在一个专业领域不断学习和积累。对所有的web前端工程师来说,朝着这个职业发展方向,只要足够耐心、厚积薄发,成功的概率是非常高的。
3.网页设计师
网页设计师可以将平面设计中的审美观点套用到网站设计上面来(其区别是动态网页的制作是平面设计不能达到的,它是一种审美方式的延伸)。
除了以上所说的这几种外,Web前端工程师能做的还有很多,比如工作之余自己在网上接单,在接单的过程中你会碰到各种各样的问题、项目,对于自身技术的要求是非常高的,但同样,如果你的技术非常高,那么通过接单你就可以挣到不菲的外快;由于Web前端工程师的知识面非常广,几乎网站方方面面的知识都要了解,所以自己创业也是一个不错的出路,不过这需要你有足够的工作经验才行,而且你的知识面需要非常广,否则创业这条路还是别考虑的好。
总之,Web前端工程师的就业方向是非常广泛的,只要你掌握好技术,那么根本不愁找不到工作,

Ⅹ 2019阿里前端面试题

干开发也有不少年头了,其实每个开发人员应该都有总结和写技术点的习惯,俗言说得好“好记性不如一个烂笔头”。 

我是一枚女程序猿,很少发文章,并且我深知这是不对的,不管好与坏分享出来大家一起讨论,总会把不好的变成好的,窄路变成宽路。哎,可能个人使然,但是发表出来的还是很少,都是在自己的工作笔记里每次记录着技术心得和一些总结。总觉得发表出来万一不好,被人取笑了怎么办。总之是一个爱多想的女程序员。

最近我以前一个同事在找工作,她面试了阿里,然后跟我聊了聊,说让我多发表自己的文章,建立自己的社区,最好再多参与一些开源项目或者在git上多建一些自己的项目。这话我以前也听过,但是就是执行上不彻底啊。

这不,我现在必须把自己以前写好的或者接下来的每一点技术总结也好 经验总结也好,都想写出来,就当不为别人看,为自己也行!

话不多说了,她给我发了一道她面试阿里的题。我自己做了做。这是我目前想到的思路和写法。欢迎有更好更优的方案发出来。我也可以学习。谢谢~

题目:

筛选笔试题 (请在半小时内完成):

var arr = [

   {name:'小米1', value: 1,  type: 2, date: '2018-06-07T08:00:01.589Z' },

   {name:'锤子T1', value: 1, type: 2, date: '2018-06-07T08:10:01.589Z' },

   {name:'小米2', value: 1, type: 4, date: '2018-06-07T20:00:01.589Z' },

   {name:'小米2', value: 4, type: 4, date: '2018-06-07T20:10:21.189Z' },

   {name:'小米4', value: 1, type: 4, date: '2018-06-07T08:00:01.560Z' },

   {name:'小米4', value: 2, type: 4, date: '2018-06-07T08:10:31.584Z' },

   {name:'小米6', value: 1, type: 3, date: '2018-06-07T08:00:01.589Z' },

   {name:'小米5s',value: 1, type: 4, date: '2018-06-07T08:00:01.589Z' },

   {name:'锤子T2', value: 1, type: 4, date: '2018-06-07T08:00:01.589Z' },

   {name:'锤子T1', value: 4, type: 4, date: '2018-06-07T08:06:01.589Z' },

   {name:'魅蓝note5', value: 1, type: 4, date: '2018-06-07T08:00:01.589Z' },

   {name:'魅蓝note2', value: 5, type: 4, date: '2018-06-02T08:07:01.589Z' },

   {name:'魅蓝note2', value: 6, type: 4, date: '2018-06-07T08:00:01.589Z' },

   {name:'魅蓝note3', value: 1, type: 4, date: '2018-06-05T08:00:01.589Z' },

   {name:'魅蓝note', value: 1, type: 4, date: '2018-06-07T08:00:01.589Z' },

   {name:'oppor9', value: 7, type: 4, date: '2018-06-04T08:04:01.588Z' },

   {name:'华为p9', value: 1, type: 4, date: '2018-06-02T08:00:01.577Z' },

   {name:'华为p9', value: 2, type: 4, date: '2018-06-07T08:00:01.110Z' },

   {name:'华为p10', value: 1, type: 1, date: '2018-06-07T08:00:01.534Z' }

];

/**

* 请用您认为最优化的方式,将arr中的type为4的数据过滤出来,

* 然后按相同的 name + date(按天)合并value(value累加),

* 然后按 value 降序(从大到小)排序,

* 最后每行按照 "${name},${本地日期},售出${sum(value)}部" 的格式,如:"小米2,2017年06月08日,售出5部", 打印(console.log)出来。

* 可以使用第三方js库,可以使用es6。

* 请在半小时内完成。

要求最后输出结果样例如下:

oppor9,2017年06月04日,售出7部

魅蓝note2,2017年06月07日,售出6部

魅蓝note2,2017年06月02日,售出5部

小米2,2017年06月08日,售出5部

......

*/

function printArray(arr){

}

我的解答:

function printArray(arr){

    const res = arr.filter(function(item, index, arr){

        item.date = item.date.split('T')[0]

        return item.type === 4

    })

    console.log(res)

    const newArr = []

    const temp = {}

    for(const i in res) {

        const key = `${res[i].name}@${res[i].date}`

        if (temp[key]) {

            temp[key] += res[i].value

        } else {

            temp[key] = res[i].value

        }

    }

    console.log(temp)

    for (const key in temp) {

        const tempObj = {}

        tempObj.name = key.split('@')[0]

        tempObj.date = key.split('@')[1]

        tempObj.value = temp[key]

        newArr.push(tempObj)

    }

    console.log(newArr)

    function compare(prop) {

        return function(a, b){

            const value1 = a[prop]

            const value2 = b[prop]

            return value2 - value1

        }

    }

    newArr.sort(compare('value'))

    console.log(newArr)

    newArr.forEach((item, index) => {

        const printStr = `${item.name},${item.date.split('-')[0]}年${item.date.split('-')[1]}月${item.date.split('-')[2]}日,售出${item.value}部`

        console.log(printStr)

    })

}

printArray(arr)

我有注意到时间那有点差异,题目数组里给的是2018,让最后打印出来是2017年,我自己觉得是打印错了。如果在现场我估计我会再问一下面试官这里是否不一样。如果真不一样,程序里在处理一下就行了

好了,此题完结。