前言,不愧是阿里大佬

  • js继承 (原型式、构造函数式、组合式、寄生式)
  • js判断类型 (typeof 、 instanceof、 Object.prototype.toString.call)
  • settimeout和setinterval区别 。 宏任务、微任务、异步队列
  • 一道考察promise的题
let j = ()=>{
    return  2
}
new Promise((resolve, reject)=>{
    resolve(1)
}).then(j).then(req=>{
    console.log(req);    //2
})
复制代码
  • 说几个http字段吧,作用是什么(content-type 、Cache-Control 、Etag)
  • 跨域问题 node怎么配置跨域 (cros)
  • http状态码以及代表什么
  • cookie、session、token
  • node的框架学过吗 express、koa 区别? 这里笔者主要讲了洋葱模型
  • 笔试题 1.广度优先遍历二叉树 2.多维数组压平 3.翻转矩阵 笔试题都不难,是leetcode的easy原题。

这次面试表现得不是很好,很紧张,写编程题的时候手都在抖。幸运的是当天晚上就被告知通过了。第二天开始二面。

「字节跳动(头条部二面)」

二面面试官是一个小哥哥,没有露脸,全程语音交流。

  • 前端优化 这个题比较开放,可以从减少资源请求、资源大小、优化网络、资源加载、回流重绘等多方面回答。
  • vuex状态管理存在意义? 单向数据流、集中管理
  • vuex的action怎么触发? dispatch
  • 介绍下项目 、难点? 这个就不细讲了,每个人项目都不一样,答得让面试官觉得你在遇到问题时有思考的过程就好。
  • 笔试题
1.实现一个add方法
add(1)(2,3)(4).value()   输出: 10

function add(...num) {
    let curr = function (...out) {
        return add.apply(this, num.concat(out))
    }
    curr.value = function () {
        return num.reduce(function (pre, cur) {
            return pre + cur
        })
    }
    return curr
}
2.实现一个异步队列Queue,要求按时间依次执行callback
new Queue().task(1000, function () {
    console.log(1);
}).task(2000, function () {
    console.log(2);
}).start()

答案1:
function Queue1() {
    this.queue = []
    this.task = (time, fn) => {
        this.queue.push({fn, time})
        return this
    }
    this.start = () => {
        let deffer = 0
        for (let i of this.queue) {
            deffer += i.time
            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. 根据入口文件,分析模块依赖(深度遍历),treeshicking
4.对应的文件使用对应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 = 0
    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接口
  • 三道很简单的编程题(前两个代码量有点多,把第三题分享出来)

最后

在这里小编整理了一份Android大厂常见面试题,和一些Android架构视频解析,都已整理成文档,全部都已打包好了,希望能够对大家有所帮助,在面试中能顺利通过。

CodeChina开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》

image

image

d架构视频解析,都已整理成文档,全部都已打包好了,希望能够对大家有所帮助,在面试中能顺利通过。

CodeChina开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》

[外链图片转存中…(img-ZIcnPjYT-1631092558277)]

[外链图片转存中…(img-odokQSqr-1631092558280)]

喜欢本文的话,不妨顺手给我点个小赞、评论区留言或者转发支持一下呗

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值