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. 为什么选择前端而不是后端

上次更新于: