腾讯CDG金融科技面经(已oc)
一面
上来先是四道编程题。下面附加我当时写的代码(可能有错误,欢迎指出~)面试过程中主要还是考查编程思维吧
1、给定一个整数数组,判断是否存在重复元素。
如果任意一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。 示例 1: 输入: [1,2,3,1] 输出: true 示例 2: 输入: [1,2,3,4] 输出: false 示例 3: 输入: [1,1,1,3,3,4,3,2,4,2] 输出: true var fn = function(arr){ var m = new Map() for(let item of arr){ if(m.has(item)) return true else m.set(item) } return false }
2、给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例 1: 输入: 1->1->2 输出: 1->2 示例 2: 输入: 1->1->2->3->3 输出: 1->2->3 var fn = function(head){ var p = head while(p.next!==null && p!==null){ if(p.next.value === p.value){ p.next = p.next.next } p = p.next } return head }
3、翻转一棵二叉树
示例: 输入: 4 / \ 2 7 / \ / \ 1 3 6 9 输出: 4 / \ 7 2 / \ / \ 3 1 9 6 var fn = function(node){ if(node.left===null && node.right===null) return node var t = node.left node.left = node.right node.right = t fn(node.left) fn(node.right) return node }
4、给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。
你应当保留两个分区中每个节点的初始相对位置。
示例: 输入: head = 1->4->3->2->5->2, x = 3 输出: 1->2->2->4->3->5 var fn = function(head,x){ var p1 = new ListNode(0) var p_1 = p1 var p2 = new ListNode(0) var p_2 = p2 var p = head while(p.next!==null){ if(p3.value < x){ p1.next = p } else{ p2.next = p } p = p.next p1 = p1.next p2 = p2.next } p1.next = p_2.next return p_1.next }
- Eventloop 机制
- 防抖、节流
- cookie、session 的区别
- cookie 是解决什么问题的?为什么要有cookie?
- HTTP 协议
- GET、POST 请求方式的区别
- 为什么参数放在 URL 安全性较低
- HTTPS 协议
- 浏览器缓存机制
- 强缓存、协商缓存是否发起网络请求?
- BOM、DOM 的区别
- 操作系统的进程、线程
- 数据库的索引,其作用是什么?
- 你平时是怎么学习这些知识的?
二面
前面几个问题忘记了,就记录还记得的:
- 说一下从输入 URL 到页面加载完成的全过程,越详细越好
- vue 生命周期
- vue 数据双向绑定原理
- vue 3.0
- 网页传输状态有哪几种模式?
- 浏览器在多个标签页之间是如何通信的?
- cookie、session、localstorage 的区别
- 怎么给 localstorage 设定过期时间?
- ES6、ES7、ES8 的新特性
- Promise
- 说一说 动态规划
- 给你一个字符串 s,找到 s 中最长的回文子串。
示例 1: 输入:s = "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。 示例 2: 输入:s = "cbbd" 输出:"bb" 示例 3: 输入:s = "a" 输出:"a" 示例 4: 输入:s = "ac" 输出:"a"
这里给个 链接 ,大家自行编程和查阅答案吧~
HR面
- 自我介绍(这里注意要针对非技术岗的自我介绍)
- 针对你的项目经历、学校经历进行提问
- 说说你相比于其他同行同学最核心的优势是什么?
- 之前有好几次面试失败的经历,你怎么看待?
- 有亲属在腾讯吗?
- 你是哪里人?老家在哪里?
- 有没有面试其他公司?