写点什么

已拿字节、腾讯、墨墨 offer,kotlin 极简教程

作者:嘟嘟侠客
  • 2021 年 11 月 28 日
  • 本文字数:5406 字

    阅读完需:约 18 分钟

setTimeout(i.fn, deffer)}}}答案 2:


function Queue2() {this.queue = []this.task = (time, fn) => {this.queue.push(function (resolve) {setTimeout(function () {resolve(fn())}, time)})return this}this.start = async () => {for (let i of this.queue) {await new Promise(i)}}}复制代码


这次面试的笔试题写的时候全是 bug,给面试官留下很不好的印象。不过这次面试结束的时候,面试官给了我一些学习上的建议,并给我一定的鼓励。晚上的时候 HR 来点说要进行评估,无奈评估未通过。不过想起二面时面试小哥哥对我的鼓励,决定再战。

「清远墨墨」

笔者最开始接触清远墨墨是考四级的时候下载了这个 app(虽然从来没有真的用过)。面试的时候有个 hr 小姐姐加了我,给我介绍公司,通知我面试。 面试的时候是在企业微信上,boss 和技术一起面我。


  • BOSS : 用过墨墨 app 吗 (笔者很慌,撒谎说用过)

  • 背了多少单词 (更慌了,随口说 100 个左右)

  • 怎么知道有墨墨这个 app 的 (同学介绍)

  • 你简历说你自己心思缜密,但是你简历上的句子的标点符号有问题啊。(emmm)

  • 项目的 UI 问题

  • 技术 : JavaScript 空数组是 true 吗?

  • JavaScript 是单线程吗

  • js 精度问题 0.1+0.2 === 0.3 //false

  • 你觉得英语水平会影响编程吗 (答影响不大)


原谅我只记住了这些,这次面试技术上更偏向于 js 基础知识,问了很多口头判断题,只需要回答 yes or no 就可以了。 如果有想去向清远墨墨这样的小公司实习的,笔者建议多了解这个公司的相关信息,因为很可能接触到 BOSS 的灵魂拷问。清远墨墨公司压力相比于大厂小,公司里养了很多猫,还是个猫咖。如果不是为了面包,笔者是很青睐这种公司的。虽然拿到了 offer,还是婉拒了小姐姐,对方还很礼貌的问我,怎么不来了呢,是不喜欢广东吗? T_T 。

「腾讯 PCG 一面」

这次面试是在电话上进行的,面试官小哥哥说话很清晰,问的问题也很细,总体来说表现还是可以的。


  • 为什么学习前端?

  • 了解 python、go 吗 ? 了解 python

  • node 作为后端有什么优缺点 ? 这里小哥哥告诉我 node 在高并发场景表现和性能存在瓶颈

  • 做过音视频方面的吗 ? 答做过网盘,有媒体文件预览功能

  • 浏览器重拍重绘,怎么减少重拍重绘 ?

  • 异步队列 微任务、宏任务 优先级

  • 跨域方式有哪些? 同源策略 cors、JSONP、postMessage 、代理服务器

  • JSONP 实现原理 ? 利用 script 标签和注册全局函数

  • localstorage、sessionstorage 区别 ?

  • 怎么实现一个水平居中的 alert 窗口 ? 定宽高 margin、calc、不定宽高 transform、flex 布局

  • webpack 打包过程 ?


?

1.初始化 webpack.config.js 最后的配置结果 2.初始化 compiler 对象,注册所有配置的插件,插件监听 webpack 构建生命周期钩子。 调用 run。 3. 根据入口文件,分析模块依赖(深度遍历),treeshicking4.对应的文件使用对应 loader loader 是一个函数 右到左的顺序执行 输入参数是一个字符串,输出参数也是一个字符串 5.得到每个文件结果,包含每个模块以及他们之间的依赖关系,生成 chunk。webpack 将所有的模块打包成一个函数 6.最后生成 bound 文件 是一个自执行函数

?


  • 用过你觉得最好用的 webpack 插件 ? 答模块热替换插件

  • 什么是 SPA 应用,相对于多页的缺点 首屏缓慢、不利于 SEO 爬取

  • CDN 的优势在哪里 有用过吗(答出了优势,但没有用过)

  • 浏览器缓存问题


?

强缓存 Expires 字段(受限制于本地时间) catcel-control 字段 max-age 、 public、 private 、no-store 、no-catch 协商缓存 Last-Modified 服务器发往客户端、f-Modified-Since 客户端发往服务器,携带 Last-Modified 不准确 ,引入 Etag Etag 文件的唯一识别符 通常是计算文件内容的 md5

?


  • 浏览器资源加载优先级 ? 答不了解,能给我讲讲吗,对面讲了下如图片资源,浏览器会优先加载用户可视的内容。

  • 最近在读过什么书? 深入浅出 nodeJS

  • 3:20 时,求时针分针之间的夹角。 这里注意减去时针偏移的 10 度。

  • 笔试 模拟大整数相加、相乘


function add(a, b) {let res = ''let newA = a.split('')let newB = b.split('')let c = 0while (newA.length || newB.length || c) {c += parseInt(newA.pop() || 0) + parseInt(newB.pop() || 0)res = c % 10 + resc = c > 9 ? 1 : 0}return res}function multiply(a, b) {let arr = []let num = 0;for (let i of a) {let temp = numfor (let j of b) {if (!arr[temp]) arr[temp] = 0arr[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 = 0return 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 = 0let 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 的我不禁有些得意,以为能掌控一切,没想到凉凉。。。


  1. 计算机网络七层模型

  2. IP 在哪一层 传输层。 应用层有哪些协议 HTTP、FTP 等

  3. 讲讲 TCP 四次分手

  4. UDP、TCP 区别

  5. TCP 流量控制、拥塞控制? 滑动窗口、拥塞窗口,慢开始、快重传、快恢复

  6. 你觉得 QQ 聊天是用的什么协议 。 我答 TCP,对面说是 UDP,TCP 开销太大。

  7. 十大排序算法?复杂度?

  8. 平时成绩怎么样,我答中等生,还挂过一科。

  9. 你为什么来美团(我答经常用美团订外卖吃,他说你这个回答牵强了点)

  10. 笔试题: 和为 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 = []


《Android 学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》

【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享


for(let i=start;i<=end;i++){list.push(i)

总结

学习技术是一条慢长而艰苦的道路,不能靠一时激情,也不是熬几天几夜就能学好的,必须养成平时努力学习的习惯。所以:贵在坚持!


最后如何才能让我们在面试中对答如流呢?


答案当然是平时在工作或者学习中多提升自身实力的啦,那如何才能正确的学习,有方向的学习呢?有没有免费资料可以借鉴?为此我整理了一份 Android 学习资料路线:



这里是一部分我工作以来以及参与过的大大小小的面试收集总结出来的一套 BAT 大厂面试资料专题包,主要还是希望大家在如今大环境不好的情况下面试能够顺利一点,希望可以帮助到大家。



好了,今天的分享就到这里,如果你对在面试中遇到的问题,或者刚毕业及工作几年迷茫不知道该如何准备面试并突破现状提升自己,对于自己的未来还不够了解不知道给如何规划。来看看同行们都是如何突破现状,怎么学习的,来吸收他们的面试以及工作经验完善自己的之后的面试计划及职业规划。


最后,祝愿即将跳槽和已经开始求职的大家都能找到一份好的工作!


这些只是整理出来的部分面试题,后续会持续更新,希望通过这些高级面试题能够降低面试 Android 岗位的门槛,让更多的 Android 工程师理解 Android 系统,掌握 Android 系统。喜欢的话麻烦点击一个喜欢再关注一下~


本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录

用户头像

嘟嘟侠客

关注

还未添加个人签名 2021.03.19 加入

还未添加个人简介

评论

发布
暂无评论
已拿字节、腾讯、墨墨 offer,kotlin极简教程