蚂蚁金服前端第一次电面(校招)笔记整理
这是我对自己蚂蚁金服前端一面的记录文章,整理出来的技术方面的知识点。如果有什么不对的地方,欢迎大家指出。
原文章地址
1. 快速排序
通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,以此达到整个数据变成有序序列。
首先是第一趟排序(第一次划分):
要把比第一个数49小的数放到这个49的左边,剩下的放到右边。
1、从右往左找比49小的数,第一个是27,然后27和49调换位置,
变成27、38、65、97、76、13、49、49
2、从左往右找比49大的数,第一个是65,然后65和49调换位置,
变成27、38、49、97、76、13、65、49
之后就是上面两步操作的循环,
变成27、38、13、97、76、49、65、49
变成27、38、13、49、76、97、65、49
第一趟排序完成
接着将数据分成49左边和49右边两个部分,分别对两个部分进行上述操作,先进行左边部分排序,
变成13、27、38、49、76、97、65、49
此时左边部分已经不能再继续分组了,也就是说左边部分排序完成
然后进行右边部分的排序,也是按照上述操作,
变成13、27、38、49、49、65、76、97
右边第一趟排序完成
之后的以此类推,
变成13、27、38、49、49、65、76、97
排序结束
2. 冒泡排序
重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素已经排序完成。
这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。
冒泡排序算法的原理如下:
1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2、对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3、针对所有的元素重复以上的步骤,除了最后一个。
4、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
举例说明:6、3、8、2、9、1
第一趟排序:
1、6和3比较,6大于3,交换位置: 3 6 8 2 9 1
2、6和8比较,6小于8,不交换位置 3 6 8 2 9 1
3、8和2比较,8大于2,交换位置: 3 6 2 8 9 1
4、8和9比较,8小于9,不交换位置 3 6 2 8 9 1
5、9和1比较:9大于1,交换位置: 3 6 2 8 1 9
第一趟进行了5次比较, 排序结果: 3 6 2 8 1 9
第二趟排序:
1、3和6比较,3小于6,不交换位置 3 6 2 8 1 9
2、6和2比较,6大于2,交换位置: 3 2 6 8 1 9
3、6和8比较,6大于8,不交换位置 3 2 6 8 1 9
4、8和1比较,8大于1,交换位置: 3 2 6 1 8 9
第二趟进行了4次比较, 排序结果: 3 2 6 1 8 9
第三趟排序:
1、3和2比较,3大于2,交换位置: 2 3 6 1 8 9
2、3和6比较,3小于6,不交换位置 2 3 6 1 8 9
3、6和1比较,6大于1,交换位置: 2 3 1 6 8 9
第三趟进行了3次比较, 排序结果: 2 3 1 6 8 9
第四趟排序:
1、2和3比较,2小于3,不交换位置 2 3 1 6 8 9
2、3和1比较,3大于1,交换位置: 2 1 3 6 8 9
第四趟进行了2次比较, 排序结果: 2 1 3 6 8 9
第五趟排序:
1、2和1比较,2大于1,交换位置: 1 2 3 6 8 9
第五趟进行了1次比较, 排序结果: 1 2 3 6 8 9
最终结果:1 2 3 6 8 9
3.冒泡排序的(时间)复杂度
4.二分查找
首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。
首先找到数组最中间的数45(若最中间的数有两个,则取前面那一个),与目的数47比较,目的数较大,则进一步查找后半部分(47-99),中间数81与47比较,目的数较小,则查找前半部分(47-53),中间数47与47比较,与目的数相等,则查找成功。
5.广度遍历
1、从图中某个顶点V0出发,并访问此顶点;
2、从V0出发,访问V0的各个未曾访问的邻接点W1,W2,…,Wk;然后,依次从W1,W2,…,Wk出发访问各自未被访问的邻接点;
3、重复步骤2,直到全部顶点都被访问为止。
访问顺序为:0,2,1,5,3,4
结果不是唯一的,只要满足“广度”的含义即可。
6.前序遍历
前序遍历首先访问根结点然后遍历左子树,最后遍历右子树。在遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。
前序遍历结果:ABDECF
7.如何找到一个字符串里出现次数最多的字符
8.取小数点后的第N位上的数字
例如取123.123456789的第5位,也就是5。
第一种方法:先把这个数转换为字符串,然后用正则表达式取出小数点后面的部分,即小数部分,再用 charAt() 方法取出第N位上的数字。
第二种方法:先把这个数转换为字符串,然后用 indexOf() 方法得到小数点的索引,也就是位置,再+N,就是第N位上数字的索引,再用 charAt() 方法取出第N位上的数字。
9.截取一个数的小数点后N位
有一个带有小数点的数,整数部分不清楚有多少位,要取到这个数的小数点后N位,也就是说后N位之后的部分直接舍去,不用四舍五入,输出前面的部分。例如取到123.123456789的后5位,就是舍去“6789”,输出123.12345。
第一种方法:把数字转换成字符串,再用正则表达式取出要求的数字
第二种方法:先把这个数转换为字符串,然后用正则表达式分别取出小数点前面和后面的部分,也就是分开整数部分和小数部分,然后用 substring() 方法取到前N位,再用 concat() 方法连接之前被取出的整数部分和处理之后的小数部分,得到结果。
第三种方法:把数字转换成字符串,然后用 indexOf() 方法得到小数点的索引,也就是位置,再+N,得到要求的数字加上整数部分、小数点一共多少位,然后用 substring() 方法取出要求的数字。
第四种方法:先用 toFixed() 方法(这个方法会四舍五入),得到要求的数字,然后用之前讲的方法得到小数点第N+1位的数字,通过这个数字是否大于4判断 toFixed() 方法有没“五入”进1,如果进1了再减去。
10.浏览器的同源策略
11.浏览器的事件模型
一个完整的JS事件流是从window开始,最后回到window的一个过程。
事件流被分为三个阶段(1~ 3)捕获过程、(3~ 4)目标过程、(4~ 7)冒泡过程。
12.比较对象是否相等
首先,用双等号 == 去比较对象是错误的,因为基本类型 string,number 通过值来比较,而对象通过指针指向的地址来做比较。也就是说双等号 == 比较的是地址(三等号 === 也是),如果比较的对象地址不同,无论使用" == “还是” === ",都返回false。
另外,如果想比较对象是否相等,要先考虑是想判断两个对象的属性是否相同,还是想判断属性对应的值是否相同,如果是判断属性的值是否相等,还要考虑值是否为对象的情况。
下面讲一个判断对象的值是否相等的方法(值不为对象)
function isObjectValueEqual(a, b) { //取对象 a 和 b 的属性名var aProps = Object.getOwnPropertyNames(a);var bProps = Object.getOwnPropertyNames(b);//判断属性名的 length 是否一致if (aProps.length != bProps.length) {return false;}//循环取出属性名,再判断属性值是否一致for (var i = 0; i < aProps.length; i++) {var propName = aProps[i];if (a[propName] !== b[propName]) {return false;}}return true;
}
13.js的this指针
14.CSS盒模型
盒模型分为标准盒模型和IE盒模型,盒模型由内容content、内边距padding、边框border和外边距margin组成。
标准盒模型:
元素的 width、height 只包含内容 content,不包含 border 和 padding 值;
盒子的大小由元素的宽高、边框和内边距决定。
蚂蚁金服前端第一次电面(校招)笔记整理相关推荐
- 记蚂蚁金服前端第一次电面(校招)
这是我结合蚂蚁金服前端一面的经历整理的一些笔记.如果有什么不对的地方,欢迎大家指出. 关于这次面试相关的技术方面的问题我整理在了另外一篇文章里 前面的问题主要是对整个人的了解,后面技术方面的问题会根据 ...
- 一位年薪 180 万的蚂蚁金服大佬扔给我的笔记,建议看完
2021 终于迎来了夏天,去年一年,全世界都不安定,被疫情包围,渐渐治愈和免疫,国内虽然看着和往常没有多大的区别,但对于经济的冲击,不知道又倒退了多少年?大大小小的公司面临倒闭或已破产,对于职场上的我 ...
- 2022最新蚂蚁金服Java岗面试题库(整理版)
前言 由于作者面试过程中高度紧张,本文中只列出了自己还记得的部分题目.笔者面的是阿里的Java研发工程师岗,面试流程是4轮技术面+1轮hr. 蚂蚁金服关于spring部分面试问题: 1.Spring ...
- 蚂蚁金服 java电话面_蚂蚁金服前端电话面试(一面)
1. 自我介绍 2. 介绍项目相关:如何技术选型,遇到最大的问题,如何解决问题,哪个项目让我学到最多,印象最深刻之类的. 3. 性能优化有哪些原则措施,减少http请求为什么能提高性能?有没具体实践过 ...
- Java程序员春招三面蚂蚁金服,1200页文档笔记
什么是Redis的持久化 我们知道Redis的数据都存储在内存中,如果服务器突然宕机,那么内存数据将会全部消失,为了防止这种情况出现,利用一套机制来保证数据不会因为故障而丢失,我们将这种机制称之为Re ...
- 支付宝蚂蚁金服是怎么把前端性能监控做到极致的?
本文来自蚂蚁金服前端技术专家杨森在 ArchSummit 北京 2018 的分享,他将分享如何通过 Performance 相关的 API 准确的采集用户性能数据,并如何通过大数据计算加工最终产出用户 ...
- 阿里蚂蚁金服、蘑菇街、腾讯、去哪儿等实习面试
说在前面的话 今天收到了自己满意的第一个offer也是第二个offer(第一个太low了不好意思说,BAT牛叉不在意,没赶上华为面试可惜了),每次面试都有收获,不愧于自己这段时间的小小努力.其实也没什 ...
- 蚂蚁金服组件 ReferenceError: primordials is not defined
ReferenceError: primordials is not defined 错误经过 使用蚂蚁金服的某个第三方组件时,本地需要测试编译,执行 npm start 出现这个错误 Referen ...
- React 技术栈在蚂蚁金服的实践
在2017在线技术峰会"阿里开源项目最佳实践"上,蚂蚁金服前端工程师崔晓斌为大家带来了"React 技术栈在蚂蚁金服的实践"的演讲.主要从研发的模式变迁开始说起 ...
最新文章
- UVALive 4318 Navy maneuvers
- document.getElementByName()的用法
- 【Node.js】http-server 实现目录浏览服务
- colab中的在Github中保存一份副本无法保存到自己github
- Linux禁用user01账户,Linux 管理用户 useradd
- python的实例类方法、修饰器类方法、修饰器保护方法、修饰器静态方法中私有属性的区别和自定义property的读写方法
- 【咀嚼C语言】二维数组找鞍点
- java文件字节流和文件字符流的使用
- redhat7.3 superset的离线安装
- Web 实现登录记住密码功能
- 树莓派USB摄像头使用
- 关于centos7重启报错:[sdb] Assuming drive cache: write through [sda] Assuming drive 解决如下
- dsp和通用计算机的区别,汽车dsp和功放区别
- 什么是Mixin?带你了解Vue中的Mixin混入
- maskrcnn-benchmark win10安装报错及解决方案
- 2022年9大顶级网络安全工具,有免费,有开源
- wps如何放大导航窗格字体
- STM32CubeMx 串口打印调试信息
- html代码复制繁体,JavaScript_简体中文转换繁体中文(实现代码),复制代码 代码如下:var Default_is - phpStudy...
- EAGLE 基本介绍
热门文章
- 173:vue+openlayers:解决国内openstreetmap地图加载不出来的问题(代码示例)
- DM365 linux内核文件系统的烧写步骤及其uboot参数配置
- 解决required a single bean, but 2 were found问题
- Base64与Bitmap转换
- 【Java】 SpringBoot - 零基础搭建并使用
- mysql 修改年龄_MYSQL——数据修改
- WCDMALTE Linux移远USB驱动程序用户指南(WCDMA/LTE Standard/Automotive/LTE-A Module Series)
- 不可注册为ActiveX控件
- (私人收藏)2019WER积木教育机器人赛(普及赛)解决方案-(全套)获取能源核心
- 怎么把idea中的项目上传到github上