while (newA.length || newB.length || c) {
c += parseInt(newA.pop() || 0) + parseInt(newB.pop() || 0)
res = c % 10 + res
c = c > 9 ? 1 : 0
}
return res
}
function multiply(a, b) {
let arr = []
let num = 0;
for (let i of a) {
let temp = num
for (let j of b) {
if (!arr[temp]) arr[temp] = 0
arr[temp] += (i * j)
temp++
}
num++
}
for (let i = arr.length-1; i >0; i–) {
if (arr[i] > 9) arr[i-1] += parseInt(arr[i]/10)
arr[i] = arr[i]%10
}
return +arr.join(‘’)
}
复制代码
这次面试感觉还不错,面试官小哥哥给我讲了很多东西,还告诉我他在工作中的实际业务,使用的技术栈,现在的前端发展。对我这样的双非学历也一视同仁,我个人是非常尊敬欣赏这样的面试官的。打call!
「阿里钉钉」
阿里钉钉是在钉钉上加了群,和群主老哥聊过几句,最后也是这位老哥面的我。上来就是两个笔试题。
1.函数防抖?
function throttle(fn,delay) { //节流
let lasttime = 0
return function () {
let nowtime = new Date().getTime()
if(nowtime-lasttime>=delay){
fn.call(this)
lasttime = nowtime
}
}
}
2.爬梯子问题?
function jumpFloor(number)
{
let fib = [0,1,2]
if(number<3) return fib[number]
for(let i = 3;i<=number;i++){
fib.push(fib[i-1]+fib[i-2])
}
return fib.pop()
}
复制代码
面试题
- 前端安全 怎么防范XSS攻击?
- 如何进行转义
- 网络爬虫有了解吗
- CDN主要用来解决什么问题? (负载均衡、就近原则)
这次面试和以前的面试遇到的问题差不多,但对面没有直接问我问题,而是从实际问题引导我回答。我能听出对面是在引导我回答某方面的知识,但是我就是没有听懂他到底想问什么。面试快结束时,他对我说:我和你是老乡,之前也有在钉钉上聊过,所以特意把你的简历拿到了我这里,不知道这对你是好事还是坏事。(听到这里我知道已经凉了)之后他还顺便提醒我,你爬梯子代码那里写的是 * 号,应该是 + 号。 (我心里一阵凉风)。 心里很感谢这位钉钉的老哥,下定决心把平时模糊的概念一定要弄懂。
「阿里CBU一面」
- html节点类型? 块级元素和行内元素
- vue的双向绑定原理? 订阅发布模式和Object.defineProperties
- vue3.0、2.0、1.0的区别? 主要答的是虚拟DOM、proxy代替Object.defineProperties
- 为什么用proxy代替Object.defineProperties 后者只能监听已有属性变化,且不能监听数组的内容变化
- vue的解析器原理? 用template生成AST语法树分析
- async浏览器支持情况,没有async的时候用什么模拟? (generator)
- generator有什么作用? 供for of 消费、利用next接口
- 三道很简单的编程题(前两个代码量有点多,把第三题分享出来)
/* 字符串隐藏部分内容
- mask(‘85022088’); // 85****88
*/
function mask(str, char) {
if (str.length <= 4) return str.replace(/\w/g, char)
let newStr = ‘’
let start = 0
let mask =${char}${char}${char}${char}
start = Math.floor(str.length / 2 - 2)
newStr = str.slice(0, start) + mask + str.slice(start + 4, str.length)
return newStr
}
复制代码
这次面试总体感觉很不错,主要是因为面试官小哥人很幽默,面试氛围也很放松,和我闲聊了很多。这个小哥带给我很多积极能量,笔者希望能在以后遇到越来越多这样的人。
「腾讯PCG二面」
PCG二面很突然,早上刚起床来的电话,就匆匆开始了~
- 谈谈你的实习经历,过程中你遇到哪些问题,怎么克服的 (这里主要谈了自己在技术上和同事协作遇到的问题,一顿胡编。。。)
- 两个用户,A在深圳带宽2M,B在上海带宽100M,请求一个服务器部署在黑龙江4kb的文件。谁更快?(个人认为理论上差不多,现实上B可能由于距离近会快一些。我的答案不一定正确)
- 浏览器地址栏输入网址到显示,发生了什么?大概过程如下:
❝
DNS
迭代查询 浏览器缓存记录 、本地host文件记录 、本地的DNS服务器
递归查询 根服务器 顶级域名、二级域名、权威服务器
逐层封装 tcp->ip->数据链路层(首部mac) 帧 ->比特流 -> 经过路由根据ip转发 -> ip解析到mac地址。 逐层拆解。
tcp三次握手过程 建立http连接
https、http 建立https连接 (TLS/SSL握手)1 客户端发送请求,支持的加密协议到服务端 、 服务端返回公钥和证书到客户端 2 客户端证书验证 生成对称密钥随机数 公钥对其加密,发送到服务端 3 服务器私钥解密发来的公钥,用公钥加密数据。建立通信
http重定向 状态码 等 浏览器通过解析HTML,生成DOM树,解析CSS,生成CSS规则树,然后通过DOM树和CSS规则树生成渲染树。渲染树。重排重绘。
❞
这是个开放性问题,我也只能答到这种程度。
- 砝码分盐问题。 140g盐用2g和7g砝码,一个天平,三次分出50g、90g
- 反问环节 这里我问道面试官我有哪里不足? 对方很中肯的告诉我在计算机网络底层需要加强。
「字节商业变现平台一面」
- 怎么判断数组类型? Object.prototype.toString.call([]).slice(8,-1) === ‘Array’
- bind、call、apply区别
- 浏览器地址栏输入网址到显示,发生了什么?(这个和上边一样)
- TCP三次握手 为什么三次?
- http状态码?
- web通信技术? Comet(http流 、ajax轮询)、SSE、 websocket
- 都接触过哪些后端语言? node、python
- react和vue的区别? 答双向绑定和单向数据流
- vuex的作用? 状态管理、集中式管理、把公用数据抽象出来、便于开发维护
- react和jquery有什么区别? 声明式和命令式区别?
- MVVM和MVC?
个人觉得是因为这次面试问的问题恰好都是我了解的,对面印象不错,甚至夸赞我基础很牢固。面完直接开始进行二面。
「字节商业变现平台二面 + HR面」
这次面试官是部门的leader,比较严肃
- 做过哪些项目
- 项目安全问题 项目里md5在哪里加密 (我答是前端加密)
- 防止XSS、CSRF攻击?
- 前端鉴权 token
- 有做过管理类的项目吗 答无
- 一个算法题 这个题笔者没有写出来,但是说了说思路,并表示自己算法很菜
- 有什么想问的? 笔者问商业变现平台是做啥子的blabla…
大概是这些问题,有点记不清了。面完后就被告知通过了,等HR。两天后HR面,主要是问问你的优缺点,最近在读什么书,平时成绩如何。面完的两个小时便拿到offer,不得不说字节的效率是真的很高。个人觉得之所以字节发展的如此之快,和字节的务实、技术气氛浓厚,在管理上扁平化,有着很大关系。
这里拿到字节的offer后,网易来电面试,因为地域问题(笔者是东北银),婉拒了这次邀请。
「腾讯CSIG交叉面 + HR面」
过了大概几天开始腾讯PCG三面,这段时间拿到字节offer后面试欲望十分低迷。在PCG三面的时候我拒绝了接下来的面试。对面问了我为什么不面了,去了哪家公司,表示尊重选择。戏剧性的是,之后过了两天腾讯CSIG部门来电,我表示不太想继续面的时候,对方表示理解,告诉我之前PCG的面试的评价还不错,并问我如果直接发offer,是否愿意来腾讯。笔者当时很惊讶,答了愿意。没想到直接发邮件邀我三面。 三面面试官明显是一个大佬,在腾讯会议上面试,主要问了些项目的细节,全程只有不到20分钟,之后就进入到了HR面。 HR面的时候,对方迟到了10分钟,我连忙打电话过去问,HR小姐姐抱歉说刚刚在开会,之后电话面了20分钟。一周后拿到正式offer。
「美团到店事业群凉面」
这次面试我没有任何准备,来的很突然,拿到三个offer的我不禁有些得意,以为能掌控一切,没想到凉凉。。。
- 计算机网络七层模型
- IP在哪一层 传输层。 应用层有哪些协议 HTTP、FTP等
- 讲讲TCP四次分手
- UDP、TCP区别
- TCP流量控制、拥塞控制? 滑动窗口、拥塞窗口,慢开始、快重传、快恢复
- 你觉得QQ聊天是用的什么协议 。 我答TCP,对面说是UDP,TCP开销太大。
- 十大排序算法?复杂度?
- 平时成绩怎么样,我答中等生,还挂过一科。
- 你为什么来美团(我答经常用美团订外卖吃,他说你这个回答牵强了点)
- 笔试题: 和为S的连续正数序列
function FindContinuousSequence(sum)
{
let [start,end] = [1,2]
let result = []
while(start<end){
//这里把求和公式忘掉了,最后还是对面提醒的我。
let total = (start+end)*(end-start+1)/2
if(total<sum) end++
else if(total>sum) start++
else {
let list = []
for(let i=start;i<=end;i++){
list.push(i)
}
result.push(list)
end++ //start++
}
}
return result
}
复制代码
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
总结
Android架构学习进阶是一条漫长而艰苦的道路,不能靠一时激情,更不是熬几天几夜就能学好的,必须养成平时努力学习的习惯。所以:贵在坚持!
上面分享的字节跳动公司2020年的面试真题解析大全,笔者还把一线互联网企业主流面试技术要点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。
就先写到这,码字不易,写的很片面不好之处敬请指出,如果觉得有参考价值的朋友也可以关注一下我
①「Android面试真题解析大全」PDF完整高清版+②「Android面试知识体系」学习思维导图压缩包阅读下载,最后觉得有帮助、有需要的朋友可以点个赞
关注一下我**
①「Android面试真题解析大全」PDF完整高清版+②「Android面试知识体系」学习思维导图压缩包阅读下载,最后觉得有帮助、有需要的朋友可以点个赞
[外链图片转存中…(img-O23pYCFf-1711854806865)]
[外链图片转存中…(img-00UiKRYK-1711854806866)]
[外链图片转存中…(img-IYFPwC0b-1711854806866)]