web前端大厂10道经典面试题汇总(含答案详解)

web前端大厂10道经典面试题汇总(含答案详解)

最近好几个小伙伴在后台私信留言问我有没有面试题,看来随着求职高峰期的临近,大家已经开始躁动起来。今天特意先整理了10道web前端大厂面试题,包含比较详细的解题思路,希望对大家的求职备战有帮助。

1、写一个js函数,实现对一个数字每3位加一个逗号,如输入100000, 输出100,000(不考虑负数,小数)—百度前端面试题


  • 解题思路

本题是js实现number.toLocaleString()方法,面试题做了简化不考虑负数小数,此题主要是考数据类型及字符串操作,答案不唯一。

按现实思路解题,现实中添加千位分隔符是从后到前,每3位添加逗号,所以这里输入数据转换成字符串后,利用slice方法的输入负数参数从后取的特点,从后取三位数字保存在数组中,并把取剩后的数据递归重复取值,直到数据不足3位,把剩下一起存入数组中。

这时数组中按顺序保存从后到前的分割数据。实例中数组是[‘789’,’456’,’123’]。通过reverse方法倒叙输出,并通过join方法添加逗号。

2、给定一个字符串,找出其中无重复字符的最长子字符串长度—字节跳动前端面试题

  • 解题思路

这题的要点就是无重复字符的理解。首先字符串内字符位置是固定的,我们要采用顺序循环的方式解题,然后就是理解无重复字符的含义,把当前字符串分割,每个小分割内不能出现重复的字符。也就是说分割的字符串是不会互相叠加重复的,每当该段分割的下一个字符与该段分割内字符相同,当即重新开始分割字符。

所以解题时需要一个存储当前分割片段的对象,用来比较下一个字符。并取这个分割片段的长度,与每个分割片段的最大长度比较即可。本题主要考的是题面的理解,以及字符串方法的运用,需要熟练地运用才能快速解题。


3、实现超出整数存储范围的两个大正整数相加—腾讯前端面试题

  • 解题思路

首先了解超出存储范围的大数字概念,每种数据类型可存储数据量都是存在范围的

数字类型的范围:

Number.MAX_VALUE = 1.7976931348623157e+308

Number.MIN_VALUE = 5e-324

整数类型的范围:-2-53-253

当超出这个范围,为了避免数据丢失,就要采用其他手段进行运算。在参考答案中,运用数组的方式解决这个问题。首先两个大整数要存储在数组中,要先保证位数对其,我们比较字符串长度把低位数的大整数字符串前面添加相应的0占位, 并逆排序。创建一个新的数组保存运算结果,将两个大整数按从后到前的顺序进行相加减,这里注意进位。把得到的数组反转到正常顺序即可。


4、任意二维数组的全排列组合—阿里巴巴前端面试题

  • 解题思路

本题做法不唯一,这里采用了把多项数组逐步两两相乘的方式,第一次先取二维数组前两项组合,把组合的结果在与第三项组合以此类推。这种递归做法简单易懂,把复杂的多项问题简化成两项问题的逐渐递增。


5、公司最近新研发了一种产品,共生产了n件。有m个客户想购买此产品,已知每个顾客出价。为了确保公平,公司决定要以一个固定的价格出售产品。每一个出价不低于要价的客户将会得到产品(每人只买一个),余下的将会被拒绝购买。请你找出能让公司利润最大化的售价。—京东前端面试题

  • 解题思路

本题是京东的业务演变题,首先要理清思路。本题中,固定出价,以及出价低于产品的顾客会被拒绝购买是解题核心。

条件中已知产品总个数,顾客出价。这里有个小陷阱,会出现N<M供不应求的情况,要特殊考虑。依据题目,我们首先需要对顾客出价排序,这里按升序排列。当供不应求出现时,我们截取出价高的顾客。然后把每个顾客的出价当做最终售价循环,得出最大化利润下的售价。


6、计算出字符串中出现次数最多的字符是什么,出现了多少次?—华为前端面试题

  • 解题思路

计算出全部字符出现次数,并留下最大的。首先利用filter()与indexOf()的方法连用字符串去重,再将得到的作为索引,利用split()分割字符串,得到字符出现次数,比较得出结果。


7、"123456789876543212345678987654321..."的第n位是什么?—小米面试题

  • 解题思路

这道题的答案不唯一,这里可以利用数学中最小循环节的概念解题,找到最小循环节后,利用余数查找第n位数字。


8、请编写一个 JavaScript 凼数 parseQueryString,它的用途是把 URL 参数解析为一个对象—淘宝面试题

  • 解题思路

淘宝这道题是很常用的场景题,这里需要处理好分段次序,首先把?分离,然后按&分割最后按=分割,主要考察字符串的函数运用以及对象的创建。

9、如果给定的字符串是回文,返回true,反之,返回false。回文:如果一个字符串忽略标点符号、大小写和空格,正着读和反着读一模一样,那么这个字符串就是palindrome(回文)。—网易前端面试题

  • 解题思路

去掉字符串多余的标点符号和空格,然后把字符串转化成小写来验证此字符串是否为回文。


10、确保字符串的每个单词首字母都大写,其余部分小写。——搜狐前端面试题

  • 解题思路
  1. 字符串转化成小写;
  2. 分割成字符串数组;
  3. 新组合字符串元素=首字母转大写+其余小写。


反手一个赞,升职加薪就当家常饭

发布于 2019-02-20

文章被以下专栏收录