文章目录
前言流程算法题实现思路小结前言
总用时:1h 55min
注意事项:wxg只收实习转正,需要至少先实习60天,地点在广州部门,所以需要确定好时间事宜
特别煎熬,特别难,绞尽脑汁,完全没问html和css,时长很久所以有一些不记得了,但是因为完全顺着逻辑就问下去了,所以能想起来大部分。
问了很多底层、操作系统等等的(真的快忘完了,复习也没复习到那些部分,也有可能一开始就没特别搞清楚),上来手撕三道算法题,感觉把毕生所学都用上了,虽然绩点高但知识没有深入的后果be like
流程
面试官自我介绍,我自我介绍手撕算法:快速排序,实现 + 讲解思路,时间复杂度是多少,怎么计算的时间复杂度手撕算法:二叉树从上到下取和最多线路的和(且取的每个元素不能是相邻两个叶子节点),时间复杂度手撕算法:两个二叉树判断相同,数据结构如下,时间复杂度,还有其他方法吗?TreeNode {left: Noderight: Nodeval: Number}
实际开发中为什么要避免用递归?递归会导致什么问题?堆栈溢出是什么溢出?什么是堆,什么是栈?这里的堆栈和操作系统的堆栈一样吗?malloc()函数或数据回收会把数据放进堆还是栈?栈存什么,堆存什么?栈是先进后出还是先进先出?队列呢?你对你简历上写的技术栈哪个比较熟悉?读过Vue源码吗?读的文档还是源码?场景:Vue中设置一个data: count
(初始0),页面中有一个{{ count }}
,还有一个按钮点一下就触发handler函数,页面上的count会怎么变化?为什么?
handler() {for (let i=0; i<100; i++) {this.data = i}}
什么是$nextTick
,怎么判断什么时候我要进行$nextTick
了什么是EventLoop?什么是宏任务,什么是微任务?怎么执行的?那么EventLoop的机制是什么?假如你开发Vue,我怎么知道有没有微任务?宏任务有哪些?let i = 1;
是什么任务?JS有几个线程?既然JS只有一个线程,那么怎么实现EventLoop的?怎么异步化的?为什么能实现异步?EventLoop里面有哪些任务,含有let i = 1;
这种任务吗?同步任务是EventLoop里面的吗?是超脱于EventLoop里的吗?进程是什么?线程是什么?进程和线程的关系?多核cpu多线程的情况下,线程用的是同一个CPU吗?线程之间怎么通信?进程之间怎么通信?场景:有线程A中一个地址指向数据,线程B可以直接拿这个数据吗?什么是信号量?干嘛的?什么是锁?有哪些锁?怎么保证线程安全?互斥锁实现机制?
算法题实现思路
我写的如下,时间复杂度O(nlogn)
,说了感觉可用期望算,最后不会算,只能大概讲一下pivot = arr[Math.floor(arr.length / 2)]; // 以中点元素作为基数的话quicksort(arr, pivot)function quickSort(arr, pivot) {if (arr.length <= 1) {return arr;}const left = [];const right = [];for (const ele of arr) {if (ele < pivot) {left.push(element);} else if (ele > pivot) {right.push(ele);}}return [...quickSort(left), pivot, ...quickSort(right)];}
递归做的,时间复杂度O(2^n)
// nums的结构类似 [3, 2, 3, 3, 1]function rob(nums, start, end) {if (start > end) {return 0;}// 递归从最下面的叶子节点网上加const curHouse = nums[start] + rob(nums, start + 2, end);const nextHouse = rob(nums, start + 1, end);if(curHouse > nextHouse){return curHouse;}return nextHouse;}
递归做的,时间复杂度O(n)
,其他方法说了一下推栈做(弄成数组的结构),但没成功写出来
/**TreeNode {left: Noderight: Nodeval: Number}*/function compare1(tree1, tree2) {if(tree1 === null && tree2 === null) {return true;}if((tree1 === null && tree2 !== null) || (tree1 !== null && tree2 === null)) {return false;} return (tree1.value === tree2.value && compare1(tree1.left, tree2.left) && compare1(tree1.right, tree2.right));}
小结
答得稀烂,看似答上其实没答上,瞎掰都掰不出来,去世
如果觉得《2024秋招腾讯wxg前端一面面经(只招实习转正)》对你有帮助,请点赞、收藏,并留下你的观点哦!