深圳面试日记(含腾讯字节虾皮深信服等)

875 阅读16分钟

语雀-看着可能样式好点,懒得整了 www.yuque.com/litianjiao-…

2022/2/28第一周

中软

① 中软国际-电话面试-7分钟 1面

html5新特性

盒子模型

css 清除浮动;

vue2响应式原理 问的比较浅 未深入;

vuex;

vue观察者模式;

vue组件通信;

②中软国际-电话面试2面 -29分钟

\

事件循环

promise setTimeout 宏任务/微任务 //宏 setTimeout setInterval 微任务 promise 微任务优先级高于宏任务

\

浏览器事件处理模式

\

冒泡:div-body-document

捕获: document-body-div

Dom事件流:同时支持 但是 捕获事件先发生。

\

w3c标准 addEventListener(event,fn,useCapture) useCapture设置捕获是执行还是冒泡时执行 true 捕获 false 冒泡

IE 用attachEvent 默认 冒泡

\

w3c 任何模型都是事件捕获->处于目标->冒泡 第三个参数true 捕获阶段执行 false 冒泡阶段执行 默认为false

\

\

apply call bind()区别

相同:

改变this指向

\

不同:

a、 call apply改变了this上下文便直接执行函数,bind是返回了改变上下文的一个函数(非立即执行,需再次调用返回的参数)

b、 call 第二个参数之后是作为参数类表,apply把其他参数都放在第二个参数上作为一个数组 ,bind再返回的函数里再传参。

\

\

深拷贝

数组和obj深拷贝方法

箭头函数和普通函数

\

a、更加简洁

b、没有自己的this 是上层执行环境的this 不能作为构造函数

c、this不能改变指向

d、没有prototype

原因:言设计层面的问题;箭头函数本来就作为轻量级函数的定位设计出来的不因该给他加更多的包袱

\

B/S开发 C/S开发区别

\

安全性能 / 响应性能|逻辑处理 / 维护性 / 个性化

C/S

优点:

\

2.1 C/S架构的界面和操作可以很丰富,个性化强。

2.2 安全性能可以很容易保证,实现多层认证也不难。

2.3 由于只有一层交互,因此响应速度较快。

缺点:

2.4 适用面窄,通常用于局域网中。

2.5 用户群固定。由于程序需要安装才可使用,因此不适合面向一些不可知的用户。

2.6 维护成本高,发生一次升级,则所有客户端的程序都需要改变

\

\

B/S

优点:

\

1)客户端无需安装,有Web浏览器即可。

2)BS架构可以直接放在广域网上,通过一定的权限控制实现多客户访问的目的,交互性较强。

3)BS架构无需升级多个客户端,升级服务器即可。

\

缺点:

\

1)在跨浏览器上,BS架构不尽如人意。

2)表现要达到CS程序的程度需要花费不少精力。

3)在速度和安全性上需要花费巨大的设计成本,这是BS架构的最大问题。

\

\

\

\

jq-vue区别

jq 优点: 比原生js更易书写, 封装了很多api, 有丰富的插件库;

缺点: 每次升级与之前版本不兼容, 只能手动开发, 操作DOM很慢, 不方便, 变量名污染, 作用域混淆等.

\

vue优缺点: 双向绑定, 虚拟DOM, diff算法, MVVM, 组件化, 通信方便, 路由分发等

\

虚拟dom diff算法

\

性能优化

a、CDN

b、懒加载

c、回流重回

d、节流防抖

e、图片优化

f、webpcak优化

loader plugin

-{

提高打包速度

减少打包体积

优化前端性能

提高构建速度

}

\

③ 中软-3面

事件循环

Slot插槽

Vue-router 钩子函数

Axios 的钩子??

常用IDE ,vscode改变vue模板文件

Vscode 文件->首选项->用户代码片段 改变vue.json

数组方法 常见的7+5,foreach break能否跳出循环

不能,break在foreach里会报错

多久能到岗位

④项目面

居住地址

大概谈谈之前项目

之前为什么离职

个人职业规划

有哪些问题

期望薪资

今日人才

一面(回答的软测试太真实了,一面就挂了,学习学习话术)

Vuex原理

事件循环

最有成就的一件事

1-3年职业规划

权限管理

上传多张图片如何设计优化

Vue原理

组件设计思路

华为OD机试+综测

一题动态规划 95%

一题队列 对每一个元素 switch 95%

一题 10 个数字分两组各五个 求 两组相差最小值 100%

大疆

(上了大B当,测试一定要积极阳光,心态平台,做事低调,帮助他人,团队协作,不领导他人,喜欢加班,喜欢挑战,没有个性,目光短浅,当一颗螺丝钉)

\

今日人才一面没过 技术还好,软测试估计没有过,回答的有些太坦诚了。

\

华为机试385/400 ,hr说做综合测试题的时候要选积极的前后一致的。

\

总结:真诚留不住,唯有套路得人心,需要对一些性格测试和软测试做一些应对,尽量往积极的方面说。

2022/3/5 第二周

虾皮:80分钟(已凉,算法题有点坑,秽土转生)

(算法有点扯,给的是输入行,数据结构要自己转换,比如二叉树后序遍历要先建个二叉树????后来改成单测试用例,直接定义字面量输入的数据结构)

基础数据类型 引用数据类型创建的位置,垃圾回收机制

display opacity visible 区别用法

BFC 怎么创建 及相关margin会不会重叠

线程与进程的区别,浏览器的线程讲一讲,Js线程和gui是并行的吗?

在原公司做过什么总结吗

浏览器缓存,详细讲讲协商缓存

Vue和react区别

vue双向绑定原理

虚拟dom 和 diff算法 好处

proxy和defineproperty区别

算法-二叉树后序遍历 (给的是输入,直接自己创建数据结构就行了)

算法-最长回文数, (问了设计思路和时间复杂度 感觉是凉了)

深信服(50分钟,是个资深后台面,貌似因为内推直接问的项目,没问基础,问项目比较多,比较细)

怎么切换不同环境的变量,vue.js .env .production

JS的设计模式(项目中实际应用)

数组去重

有没有单独负责过某块项目,平时的做项目从0到1的步骤流程

在公司比较有难度的事情

给你一个页面你怎么优化它

项目中用到的加密及加密算法(项目中实际应用)

Cookie sessionstorage localstorage区别

F12发现一个vue请求有两次

Xss攻击与应对 如何用cookie处理xss

https和 http区别 数字证书可以伪造吗,数字证书怎么防止安全的

各种加密算法与实际应用

期望工资

抗压能力怎么样

谁内推你的(找人算账?)

\

中金信用卡中心 (大早上没睡醒,面麻了)

数组splice 和 join 区别

JS事件委托

Js线程

Dom绑定事件过多为什么变慢

VueX原理 怎么绑定到vue上

路由守卫

Vue优点

vue跳转的方法

vue-router 和 location.href区别

懒加载 import require 区别

Vue原理

微任务 promise哪些方法是微任务

涉及状态 改变的才是微任务,then catch finally

腾讯一面

自我介绍

讲讲自己项目中最难的一件事

为什么离职,投入研发情况

讲讲Http线程 线程是怎么通信的

快排的时间复杂度和空间复杂度

算法

8个数最小需要比较多少次能保证找出最大最小值

怎么判断字符串是不是一个数字

\

字节一面

伪代码写一下diff算法

适配过IOS和android没有

APP 端 Jsbridge

一个数组,可复用元素,多个相加和为sum 求最小个数

Typescript

其他的忘记了 嘤嘤嘤

华为OD一面

一道算法

数组里求出现次数最多的元素和出现次数

项目只问三个模块 偏简单

Web安全

性能优化

编码规范

2022/3/12 第三周

\

深信服2面

先来一道二叉树AC 递归简单-中等

手写一个vue页面实现相应要求

实现组件v-model 传值

根据你自己写的代码来提问 for in for of :key等

权限问题

页面上下排列,有个元素定高,怎么给下面的元素撑满且可滑动

首页白屏问题

Es6对象解构赋值

\

虾皮一面(秽土转生版本)

弹性布局

Positin定位问题

原型链理解

查看数据的方式

Vuex原理,页面间通信,详细讲讲

事件总线怎么设计

Mixin 和 原页面钩子执行顺序

http 请求头有哪些 缓存相关

webpcak构建流程,css-loader style-loader

no-cache no-store

cookie有哪些属性

cookie localstrage 是否可跨页面访问

postmessage 怎么使用

cdn原理

页面间通信

手写instance of

手写节流 优化 最后一次怎么处理(先存储,单位时间内无事件,触发)

算法 ac 简单难度,优化一下

2022/3/20第四周

小步网络

机试

不定项选择

算法 简单 判断字符串是否是邮件

回答题:

①输入 1234 输入”4321”

要求递归 无全局变量 输入数字 返回字符串(防止你直接reverse)

② 闭包+tostring

匠人网络

Axios fetch ajax 原理与优缺点

V2 diff算法( 有key /无 key ) v3diff优化

响应式原理 Defineproperty的缺点

Proxy与Reflect

V3的vite

V2 /3 options API compostion Api 为什么用compostion Api

Vue项目怎么使用ts

浏览器渲染原理

链式调用原理

Mixin缺点

项目:

Watch 监听dom元素宽高

多个页面只有一个页面可以登陆用户(页面间通信,存储+短轮询 ?)

华为OD二面

忘了可能面试太多了 没什么有难度的题

算法so easy难度

太水了

国信证券

主要问了虚拟列表大数据展示

10w数据怎么可视化区域渲染

10w数据只展示一次怎么处理

腾讯秽土转生1面

不得不说,问的太深了 我不行了,还没问算法,原理已经麻了

Vue实例挂载到html上,可以挂载多个根实例吗,多个根实例之间会不会有影响。

Data()为什么是函数,不是变量,具体为什么, data是怎么挂载的,不同组件怎么处理的,

不同组件data响应式数据怎么更新的,具体到代码,方法,不同组件页面data是怎么挂载的,同名变量vue怎么处理的。

Vuex怎么理解的,你怎么实现vuex

Webpack具体怎么处理scss sacc

Webpack打包后的代码看过没有

.vue文件是被怎么分解的,分解成几部分,vue项目加载的资源你看过.vue文件被编译成什么代码没有。

路由的理解,history模式后台具体怎么配置,你配置过没有

领星/ONES/数蓬

问的正常八股,外加一些情景题

牛客

1面 问的JS和算法都比较偏基础 执行顺序 数组超过n/2地的重复数字

2面 算法不算难,判断是否是邮箱 问了promise all结合race的 一个变种题

3面 ① 让你实现一个方法 即能够 .then 又能 直接返回值, ②随机数,和最下面第二道题一样

已挂,两道题都没回答上来,偷懒必备打,第二道题之前有另一家考过,嫌非正统没有深究,玛德

平安产险

面试比较简单,常规八股

测评又挂了,测评无语了,建议有测评的都别去

总结 (分享攒人品,盼OC!)(嘤嘤嘤 已OC!)

从2/17到3/18 面试差不多接近尾声了, 常问的一些东西大概总结一下吧。

学习内容(本人js vue技术栈)

八股—来自前端同学牛牛的地址分享

www.conardli.top/docs/dataSt… 数据结构,算法,js常规手写实现

es6.ruanyifeng.com/# es6

www.yuque.com/cuggz/inter… html /css/js/vue/性能优化/计网/浏览器原理/手写代码/前端工程化/

其他的一些原理

Vue栈:

vuex原理

vue-router原理

diff算法

babel原理

按需加载原理

微前端架构原理(如果你有这块项目的话)

懒加载原理等凡是涉及到原理的你都看看吧

其他的可以参考腾讯面试的内容

以上内容尽可能有一个高的熟练度和底层原理应用,

常问考点(必备):

(1)性能优化性能优化性能优化性能优化性性能优化性能优化性能优

(2)Web安全Web安全Web安全Web安全Web安全Web安全Web安全Web安全

(3)html

1、Sciprt 的 defer async

2、H5新特性

(4)css

1、margin重叠与BFC和清除浮动

2、css选择器

3、定位

4、弹性盒子布局与 flex:1

5、响应式布局

6、居中实现

7、link @import

8、缩放

(5)js

1、数据类型/数据类型检测

2、原型链

3、继承

4、promise(特别重要 特别重要) settimeout 同步任务 及各种嵌套下的执行顺序

5、es6 箭头函数/结构赋值/promise async await 异步编程/let var const与变量和函数的提升/map set / 迭代器

6、深拷贝浅拷贝的实现

7、call apply bind

8、设计模式

以上都建议手写n遍直到精通

(6)vue(尽量深入到原理层,源码层)

1、vuex

2、vue-router

3、通信 各种场景的设计与应用

4、自定义指令

5、响应式

6、v2 v3区别

7、虚拟dom diff $nexttick

8、算了 全是原理 都精读吧

(7)webpack

1、构建过程

2、loader plugin

3、babel-loader原理 css-loader style-loader原理

4、plugin原理

(8)计算机网络

1、http http http http http 能背多少背多少 能背多细背多细

2、缓存 cache-control

3、浏览器输入网址后到页面加载完毕都发生了什么

4、加密算法及相关技术

5、常用状态码

(9)浏览器原理

1、web安全方面 及相关防止方法

2、浏览器进程 线程 建议精读

3、浏览器渲染原理

4、本地存储及其同源策略 cookie localstorage sessionstorage indexdb

5、跨域问题(不要瞎扯哦,如果你说jsonp那你最好知道他在js和axios具体代码要怎么实现)

6、事件委托

7、宏任务 微任务 执行栈

其他的一些偏项目问题

之前的前端团队

做过最难的项目/项目中的难点/怎么处理的/个人最有成就感的事

权限管理 组件权限(自定义指令) 设计模式/组件通信应用方式及详细应用写法

怎么去适配不同页面

服务端更新怎么设置让客户端不使用缓存

页面刷新 vuex 和 localstorage sessionstorage表现

微前端原理/沙盒/JS沙箱

大数据量怎么去优化展示/一个页面怎么优化展示/长链表/懒加载你怎么设计

你对前端架构的技术选型,hash history你怎么选择 spa mpa选择

太多了其他的就针对性不强了,太散了,总的来说还是要平时多积累,多思考。

很多情景问题需要临场去思考,考验你的一个项目熟练度

最后

面试不要抱着找工作的心态,是去向面试官展示自己的技术与岗位契合度的,尽量进行一个

平等的交流,对自己的技术栈保持熟悉到精通,原理能多看就多看。

深圳这边工资的话给一个参考,本人前端技术栈比较窄,js vue 2年半 大佬请忽略

对于一些差不多的互联网中小厂,八股加上一定的项目熟练度 年薪20+应该没问题

对于原理以及手写方面也比较熟练/做的项目比较好 年薪25-30应该没什么问题,对算法和JS底层更熟练一点的话(有些厂不出关于数据结构的算法,是其他方面的算法,类似于下面的问题可以复制出来做一下,拷贝,异步,返回随机数之类的),30+应该问题不大(这边卡base和工作年限太严了,过了也不按JD标记的来,按你现有offer来)。大厂可能需要你对框架源码各种原理 还有算法有一个很深层次的理解,楼主没一个到大厂HR面的,具体多少就不知道了,被虐怕了,不去大厂了(骗你的 ,半年后再战,HR已经捞不起来了)。

努力共勉!

// 注: 所有题目均可以使用任意 ES 版本中的 API

/**

  • Q1: 实现一个非原生类(数组, Map/Set 等)的浅拷贝函数

  • 此函数接收一个非原生类对象(可能有自定义的原型链), 返回

  • 一个此对象的浅拷贝.

*/

function shallowCopy(obj) {

// show me the code, please delete the following line.

}

/**

  • Q2: 实现一个加权随机函数

  • 此函数接收一个整数数组 input, 此数组:

    1. 元素个数 N < 10000
    1. 元素的值大于 0 且小于 100
  • 返回一个随机函数, 此随机函数:

    1. 返回 [0, N - 1] 之间的一个随机整数
    1. 每个整数 i 被返回的概率为:
  • 数组 input 的第 i 个元素的值 / 数组 arr 的所有元素之和

  • 例: 给定一个数组 input, 值为 [4, 2, 1, 3],

  • 调用 createWeightedRandom(input), 应当

  • 返回一个函数, 此函数返回一个 0 - 3 之间的一个

  • 随机整数, 相应的概率分别为:

  • 4/10, 2/10, 1/10, 3/10.

  • 分别按以下两种要求实现该函数:

    1. 空间复杂度不限, 返回的随机函数时间复杂度 O(1)
    1. 空间复杂度 O(N), 返回的随机函数时间复杂度 O(logN)

*/

// Q2.1: 空间复杂度不限, 返回的随机函数时间复杂度 O(1)

function createWeightedRandom_O1(input) {

// show me the code, please delete the following line.

return function (){

}

}

// Q2.2: 空间复杂度 O(N), 返回的随机函数时间复杂度 O(logN)

function createWeightedRandom_OlogN(input) {

// show me the code, please delete the following line.

throw new Error('not implemented');

}

/**

  • Q3: 实现一个异步任务执行器 AsyncWorker

  • 此 AsyncWorker: 最多只能同时执行 capacity

  • 个异步任务. 若正在执行的任务数达到 capacity,

  • 则新加入的任务需要等待其中一个正在执行的任务完

  • 成后才能被执行.

*/

class AsyncWorker {

constructor(capacity) {

this.capacity = capacity;

}

exec(task) {

// show me the code, please delete the following line.

throw new Error('not implemented');

}

}

\