IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 2022苏州微软前端社招面经 -> 正文阅读

[Java知识库]2022苏州微软前端社招面经

2022苏州微软前端社招面经

面试形式:线上视频面试,使用Microsoft Teams软件,可以开启摄像头和屏幕共享。


第一轮面试

时间:2022-3-24 10:30 时长:1小时

先是英文自我介绍,然后英文交流几句,差不多十来分钟吧。我的英文自我介绍是提前准备过,背的滚瓜烂熟了,为的就是防止面试时一紧张就卡顿结巴😂。

然后面试官让我用英文介绍一下快排算法,我就随便讲了讲,其实我英文也不是很好,主要就几个关键词:quick sort, partition, two arrays, base value, less, greater, 其他副词用的语法可能都不大对。

之后问了中间件的结构,我说到了洋葱模型。

还问了TS类型enum中只有true和false的话是否等价于boolean类型,这个我说我不清楚,他说他想问的是两个对象的属性完全一样算不算同一种类型,我就说那是一样的类型,并且提到了JS是鸭子类型语言,感觉他挺满意的罒ω罒

之后又让我打开bing网站,将搜索框中的放大镜从左边移到右边
在这里插入图片描述
我打开了审查元素面板,发现父元素form是相对定位,那我就通过绝对定位将放大镜移到了左侧。
在这里插入图片描述
此时过去了半小时,然后面试官让我做个算法题,是一道按层打印二叉树的题,每换一层翻转一下打印顺序。这道题我三天前才在LeetCode刷到过,还发给同事看过,好幸运吼吼吼*^_^*
在这里插入图片描述
当天下午HR就跟我说第一轮面试通过了,并且面试官对我评价挺好的。第一轮通过了才能有后四轮。后面四轮面试是安排在了同一天进行。


第二轮面试

时间:2022-3-29 11:00 时长:1小时

上来就是问项目问了20分钟多,啊,累。

然后发了一个TS类型推断的题,我看了一大会,说做不出来😳
他就只能给我换个算法题做,判断一个正整数的二进制是不是01交叉序列。

我刚开始用循环判断相邻位的,做完之后,面试官有提醒我这种01交叉序列是个特殊的二进制序列,能不能利用这个优势去判断呢,然后我想到可以移位再异或,如果是二进制交叉序列,就会变成全一序列。面试官又问我怎么证明是不是全一,我说+1会变成2^N的形式,可以使用求对数判断是不是整数来证明,他说数学运算是不是会慢点呢,全一序列+1后,是不是一定为进位,我说是的,如果没进位,说明中间有个0,那就不可能是全一序列了。他又说那进位了就变成了一个1后面多个0了,此时能不能判断呢,我说可以与刚才那个全一序列一下, 如果结果为0,就可以证明成立了,然后他让我用代码去实现试试:
在这里插入图片描述


第三轮面试

时间:2022-3-29 13:00 时长:1小时

面试官先给我介绍了一下他们的team, 然后聊了聊我做的项目。

之后让我打开bing网站,和百度网站,然后随便搜索一个内容,往下滚动,可以看到百度的搜索框是固定悬浮着的,而bing的搜索框是被滚动上去了,面试官让我将bing实现与百度的同样效果。

我先看了一下百度的样式,再去改bing的。如下图。从右侧的滚动条可以看出,此时已经滚动了一截了,header部分还在顶部,我是使用position: fixed实现的,并且加了个白色背景色。然后content部分加了padding-top: 140px,否则会被header盖住一截。
在这里插入图片描述
我改完后跟面试官说百度的header中下面的导航“网页 图片 视频 贴吧 知道资讯 文库 采购 地图 更多”这一排不会跟header一起固定住,因为它是独立结构的,在header和content之间,百度只做了header固定。
而bing的导航“网页 图片 视频 学术 词典 地图”这是嵌在了header里面,所以我的这种实现会将导航和header一起固定。

面试官说那要怎样能实现百度的效果呢,我说那得修改html结构了,把导航单独拿出来,和header平级。

面试官说那你还有发现什么别的问题吗,或者是bing代码写的有什么问题吗。我说我刚才设置header背景色的时候不生效,排查下看到了header里面用到了background: none important!, 而在前端开发规范中,是不建议使用!important的,此外没发现别的什么问题。

之后还剩半小时,面试官给我出了个算法题,求栈的第k大元素。

我问面试官对时间复杂度有要求吗,面试官说自然是越快越好。

我定义了一个类,实现了push 、 pop、getK方法,使用一个list维护数据。push、pop就是直接使用list的push、pop方法,getK是生成一个副本数组,直接调用sort实现从大到小排序,然后返回第k个元素。

面试官问我为什么这么写,我说我直接用数组来模拟栈,返回第k大元素,就是常见的求乱序数组的第K大元素,这个最优解使用堆来维护的时间复杂度就是O(NlogN),而我直接直接排序调用系统的sort也够快。然后他问我系统的sort是怎么实现的,我说现在编程语言的sort是几种排序组合的,根据数据规模使用不同排序策略,大规模用快排或者归并,小规模用插排。
面试官说那你可以在push和pop的时候做处理吗,我想了下,说应该可以,我试试。然后我想维护有序数组,但感觉有点麻烦,又想改成有序链表,写着写着,我感觉时间不多了可能写不好,就跟面试官说我不写了吧,我跟你讲讲思路,面试官说可以。
我就跟他说我的两种思路,一种是用数组去维护一个有序结构,一种是用链表来维护一个有序结构,每个对象都存值和顺序 {val: xxx, num: xxx}这样两个值,有序结构按照对象的值排序。面试官说这两种有什么区别呢,我说时间复杂度不同。是用数组维护有序数组,根据val排了序的,在push的时候查找插入位置时间复杂度是O(logN),因为一直维护有序,所以可以二分,然后插入的时候需要移动位置,是O(N)。面试官问了下二分的时间复杂度是O(logN)吗,我说是的。然后在pop的时候,时间复杂度是O(N),因为要找出顺序最大的数,而这个序列根据val排序,不是根据num排序,所以要找出最大的num并且移出来,时间复杂度是线性的。然后getK的时间复杂度是O(1),因为数组是根据val排序的,直接获取索引k的值就行。而用链表维护的话,push的时候查找位置是O(N),插入进入是O(1), pop的时候是O(N),getK是O(k)。
时间快到了,面试官说了不错不错。


第四轮面试

时间:2022-3-29 14:00 时长:1小时

面试官根据我的简历上提到的技术点来问,问到了React中的PreComponent组件的原理,prop变化时的渲染原理,state中有数组进行了push时,怎么渲染,为什么会渲染,我没答上来。然后又问到了SSR渲染原理,服务端组件如何做缓存,我又没答上来。

这个面试官说过最多的一句就是:那我们换个问题吧

问了半个多小时,终于不问了🥺,开始coding了,面试官给我描述了一个html片段

<ul>
	<li>1</li>
	2
	<li>
		<p>3</p>
	</li>
</ul>

让我写出Virtual Dom结构,我写的如下:
在这里插入图片描述
然后面试官又让我将这个Virtual dom渲染出来,并且可以考虑通用性。让我可以去网上查任何我需要的api。

我写的如下:
在这里插入图片描述
然后面试官让我打开浏览器运行一下看看能不能跑出来,结果很顺利的生成了那个html片段,不过面试时间超出了2分钟

呼~这轮面试真的是又累又压力>_<

第五轮面试

时间:2022-3-29 15:00 时长:1小时

是个女性面试官,声音洪亮好听,说起英语也好听,跟我用英语沟通了几句,看我简历上之前在南京工作过,就问我了我家乡是哪里的,南京和杭州更喜欢哪个,会不会去苏州 这些。

然后让我打开bing网站,搜索内容后,点击某条会打开新页面,新页面的浏览器左上角的左箭头回退按钮是灰色的不能点击,她问我怎样能让新页面可以点击左箭头回退到刚才那个URL,不是那个tab。我说要往history里面先塞入刚才的URL,她说:嗯,那代码要在哪里实现呢,我说我不知道😳

然后她说这些搜索结果项中有的是广告,广告是他们的收入,有什么办法可以让用户看广告但又不降低用户体验呢。
我说可以在滚动了一会停下来时,鼠标悬浮了一会儿后自动展示一下广告,她说方法挺好,但是广告要点进去了才能算点击量。还有什么别的方法吗,我说还可以提高广告的排名,或者将广告和真实搜索结果放一块,点进去能看到广告。她说还有别的吗,我说没了。

然后她让我做个算法题,是做一个迷宫搜索最短路径,需要输出最短步数和路径,比较简单,20分钟就做出来了,不过我电脑代码没了,就不贴了。我是用BFS+记忆上一坐标的方式去生成反向路径再翻转来实现的。

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-04-04 11:57:16  更:2022-04-04 12:01:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 7:25:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码