腾讯-腾讯看点
一面
和面试官电话聊了差不多20分钟,个人介绍,学习经历,项目经历,实习经历四个方面
然后面试官发了一套题过来,开屏幕分享做,差不多2.5小时做完
手撕代码部分
1.给定数组如下,请根据数组元素的age字段对数组排序,多种实现方式可加分
js
const a = [
{
name: '大毛',
age: 12,
},
{
name: '二毛',
age: 34,
},
{
name: '三毛',
age: 23,
}
];
// 我写了三种
// Array.sort
// 冒泡排序O(N2)
// 快速排序O(N*logN)
- 拦截 console.log 在用户传入,并且在用户输入前打印几个字符串
js
输入:console.log('Hello', 'World');
输出:xxx Hello-World
我的解法利用Object.defineProperty与闭包
js
(function () {
const log = console.log
Object.defineProperty(console, 'log', {
configurable: true,
value: function (...arg) {
log('自定义内容xxx', arg.join('-'));
}
})
})()
console.log('hello', 'world')
- 实现调用闭包函数,使每调用一次返回值都会加1
js
const func = (function () {
// TODO 请实现对应代码逻辑
})();
console.log(func()); // -> 1
console.log(func()); // -> 2
console.log(func()); // -> 3
- 编写代码判断两个日期是否是同一周(可使用MDN查询JS相关日期函数)
js
function isSameWeek (d1: Date, d2: Date): boolean {
// TODO,已知 d2 > d1, 按照周一是一周的第一天的逻辑来算,请实现对应的代码
}
console.log(isSameWeek(new Date('2019-09-28'), new Date('2019-09-29'))); // true
console.log(isSameWeek(new Date('2019-09-29'), new Date('2019-09-30'))); // false
- 给定一个大小为n的数组,找到其中的多数元素
js
多数元素是指在数组中出现次数大于n/2的元素
如输入[3,2,3]输出3,输入[2,2,1,1,1,2,2]输出2,多种实现方式可加分。
汽水2元1瓶,每3个空瓶可换1瓶汽水,请用代码实现输入任意整数金额,输出可喝多少瓶汽水
通过键盘输入一串小写字母(a~z)组成的字符串,请编写一个字符串压缩程序
js
将字符串中连续出现的重复字母进行压缩,并输出压缩后的字符串
压缩规则:
a. 仅压缩连续重复出现的字符。比如字符串"abcbc"由于无连续重复字符,压缩后的字符串还是"abcbc"。
b. 压缩字段的格式为"字符重复的次数+字符"。例如:字符串"xxxyyyyyyz"压缩后就成为"3x6yz"。
- 输入一个矩阵m*n,按照从外向里以顺时针的顺序依次扫印出每一个数字
js
input:
[
[1, 4, 7],
[2, 5, 8],
[3, 6, 9],
]
output:
1 4 7 8 9 6 3 2 5
- 写一个程序按箭头顺序在下面矩阵中填入对应数据
问答题
- 对于日均PV百亿级的页面(即访问量巨大),想要设计系统扛住流量,简述各环节(不局限于前端)上可以做哪些措施
- 进程的调度算法有哪些?请分别简述
- TCP三次握手的目的是什么?服务端为什么要回传SYN和ACK?客户端收到后为什么要回传ACK?
智力题
js
一间囚房里关押着两个犯人。每天监狱都会为这间囚房提供一罐汤,让这两个犯人自己来分。起初,这两个人经常会发生争执,因为他们总是有人认为对方的汤比自己的多。后来他们找到了一个两全其美的办法:一个人分汤,让另一个人先选。于是争端就这么解决了。可是,现在这间囚房里又加进来一个新犯人,现在是三个人来分汤。必须寻找一个新的方法来维持他们之间的和平。该怎么办呢?
二面
项目
- 项目经验
- 项目中的难点有哪些,是如何解决的
node
- 用过node吗
- 了解koa与express的区别在哪里吗
计网
- http2的特点有哪些
- 简单说一下https?它是安全的吗
- 说一下TLS协议的工作流程
浏览器
- 了解浏览器安全吗?说一下有哪些安全隐患和如何预防
技术基本功
- 对前端工程化有没有实践过
- TS与JS的区别
- 会用Git吗?说说常用的几个命令
其它
- 最近在学什么
- 平时怎么学习的
- 为什么选择前端而不是后端