Skip to content

腾讯-腾讯看点

一面

和面试官电话聊了差不多20分钟,个人介绍,学习经历,项目经历,实习经历四个方面

然后面试官发了一套题过来,开屏幕分享做,差不多2.5小时做完

手撕代码部分

1.给定数组如下,请根据数组元素的age字段对数组排序,多种实现方式可加分

js
const a = [
    {
        name: '大毛',
        age: 12,
    },
    {
        name: '二毛',
        age: 34,
    },
    {
        name: '三毛',
        age: 23,
    }
];
// 我写了三种
// Array.sort
// 冒泡排序O(N2)
// 快速排序O(N*logN)
  1. 拦截 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. 实现调用闭包函数,使每调用一次返回值都会加1
js
const func = (function () {
// TODO 请实现对应代码逻辑

})();
console.log(func()); // -> 1
console.log(func()); // -> 2
console.log(func()); // -> 3
  1. 编写代码判断两个日期是否是同一周(可使用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
  1. 给定一个大小为n的数组,找到其中的多数元素
js
多数元素是指在数组中出现次数大于n/2的元素
如输入[3,2,3]输出3,输入[2,2,1,1,1,2,2]输出2,多种实现方式可加分。
  1. 汽水2元1瓶,每3个空瓶可换1瓶汽水,请用代码实现输入任意整数金额,输出可喝多少瓶汽水

  2. 通过键盘输入一串小写字母(a~z)组成的字符串,请编写一个字符串压缩程序

js
将字符串中连续出现的重复字母进行压缩,并输出压缩后的字符串

压缩规则:
a. 仅压缩连续重复出现的字符。比如字符串"abcbc"由于无连续重复字符,压缩后的字符串还是"abcbc"
b. 压缩字段的格式为"字符重复的次数+字符"。例如:字符串"xxxyyyyyyz"压缩后就成为"3x6yz"
  1. 输入一个矩阵m*n,按照从外向里以顺时针的顺序依次扫印出每一个数字
js
input:
[
[1, 4, 7],
[2, 5, 8],
[3, 6, 9],
]
output:
1 4 7 8 9 6 3 2 5
  1. 写一个程序按箭头顺序在下面矩阵中填入对应数据 图片

问答题

  1. 对于日均PV百亿级的页面(即访问量巨大),想要设计系统扛住流量,简述各环节(不局限于前端)上可以做哪些措施
  2. 进程的调度算法有哪些?请分别简述
  3. TCP三次握手的目的是什么?服务端为什么要回传SYN和ACK?客户端收到后为什么要回传ACK?

智力题

js
一间囚房里关押着两个犯人。每天监狱都会为这间囚房提供一罐汤,让这两个犯人自己来分。起初,这两个人经常会发生争执,因为他们总是有人认为对方的汤比自己的多。后来他们找到了一个两全其美的办法:一个人分汤,让另一个人先选。于是争端就这么解决了。可是,现在这间囚房里又加进来一个新犯人,现在是三个人来分汤。必须寻找一个新的方法来维持他们之间的和平。该怎么办呢?

二面

项目

  1. 项目经验
  2. 项目中的难点有哪些,是如何解决的

node

  1. 用过node吗
  2. 了解koa与express的区别在哪里吗

计网

  1. http2的特点有哪些
  2. 简单说一下https?它是安全的吗
  3. 说一下TLS协议的工作流程

浏览器

  1. 了解浏览器安全吗?说一下有哪些安全隐患和如何预防

技术基本功

  1. 对前端工程化有没有实践过
  2. TS与JS的区别
  3. 会用Git吗?说说常用的几个命令

其它

  1. 最近在学什么
  2. 平时怎么学习的
  3. 为什么选择前端而不是后端