腾讯面试题笔试

发布时间:2025-12-09 17:44:40 浏览次数:4

腾讯前端面试题笔试

虽然已经有了offer,但还是很有幸的受邀参加腾讯前端的面试,很幸运,遇到一位很nice的大佬面试官,很有耐心的和我唠了很久,面试是用的腾讯会议远程,聊了很多,也向他请教了不少,前后加起来有4个小时了,是我经历的最长的一次面试了,下面是笔试部分的两道题,在这里记录下,分享给大家

1. 写代码用原生JS实现一个类似百度搜索框的自动完成控件,比如候选结果集arr=[‘aaa’, ‘abc’, ‘acc’, ‘dda’,…]; 用户输入’a’,下拉列表会出现以字母a开头的项’aaa’, ‘abc’, ‘acc’。要求,鼠标或键盘可以选中候选结果到输入框
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>1</title><style>.li:hover{background-color: green;}</style></head><body><p id="wrap"><input id="input" type="text" value="" oninput="inputChange(this)"><ul id="list"></ul></p></body><script>let arr = ['aaa', 'abc', 'acc', 'dda','agc', 'dds','ana', 'rbc', 'hgc', 'dfa','ass', 'dys']let ul = document.getElementById("list")let input = document.getElementById("input")let result = []let active = 0// 输入时function inputChange(e) { // get valueif (e.value === '') {ul.innerHTML = ""return}result = arr.filter(function(item){return item[0] == e.value[0]})// removeul.innerHTML = ""//addresult.map(function(val,index){let li = document.createElement('li')li.innerHTML = valli.style.backgroundColor = 'white'li.setAttribute('class','li')// key wordsif (index === active) {li.style.backgroundColor = 'green'}// clickli.addEventListener('click',function(){input.value = val})ul.appendChild(li)})}// input.addEventListener('keydown',function(key){if (result.length > 0) {if (key.keyCode ===38 && active > 0) {active -= 1input.value = result[active]}else if (key.keyCode ===40 && active < result.length-1) {active += 1input.value = result[active]}// let lis = ul.getElementsByClassName('li')for (let index = 0; index < result.length; index++) {const element = lis[index];element.style.backgroundColor = 'white'if (index === active) {element.style.backgroundColor = 'green'}}}})</script></html>
2. 实现超出整数存储范围的两个大正整数相加 function add(a, b) 。注意:参数 a 和 b 以及函数的返回值都是字符串。
// 2 数字转字符,按位相加function add(a,b){let result = "" // 保存结果// 转数组number1 = a.split("")number2 = b.split("")// 进位结果car = false// length -> 0 && 进位结束 结束循环while( number1.length || number2.length || car ){//每一次将最后数字进行相加car += ~~number1.pop() + ~~number2.pop()// 取加法完的个位 进最终结果result = car % 10 + result// 进位判断car = car > 9}// 返回return result + ''}

第一道题比较综合,我选择第二道题先快速解决,再慢慢调第一道题,最后还是都完成了,答案都是自己写的,有错误的望指正

再次感谢面试官大佬的耐心交流,比技术更美的是心灵美

需要做网站?需要网络推广?欢迎咨询客户经理 13272073477