前端岗,想来想去自己还是喜欢前端,平常没事还搞搞平面/UI设计之类的,不过,说实话研究生期间前端接触得不像本科时那么多,估计也是受当时在字节实习的影响(在那边实习经时常加班到深夜1-2点,而且上线时必须通宵),自己的热情不如本科时那么高,加上得做科研、跑实验、写论文,今年应导师的要求一直在写期刊论文,到9月份了还要投会议论文,实习也没找,也没怎么复习前端相关的内容,甚至最开始的简历,还是用的两年前的。。。
有时候也挺后悔读研的,明明当时字节可以转正,非要出来读个研,读完后还不一定能回得去。大抵还是自己没想清楚为什么要读研,本科的时候一直想着保研保研,真保上研了也不知道自己为什么要读研,可能真“没有目标性”。
说起来,如果现在能找到好工作,说起来,如果现在能找到好工作,且也能保研的,可以多想想自己为什么要读研,如果读完研后还打算走开发那还不如一开始就选择工作。
投得晚投得少:
9月份陆陆续续开始投,然后自己目标定得有点高,只投了一些大厂,一些小公司没去尝试,等到后面再去投那些小公司基本上就没什么机会了。
面试准备不足:
这应该是最大的问题吧,毕竟前半年一直再整论文,前端没怎么碰,最开始面试时其实很多都知道但答得不好,或者答得比较笼统,然后也不如本科时那么会举一反三。
不会利用人脉:
其实本科很多和自己关系比较好的同学都留在了字节、美团这些大厂,然后没有及时找他们内推查进度,甚至自己都有字节实习leader、同事们的微信,也没想过找他们推一下,导致最开始在字节这边的流程卡了很久,最后不了了之。
9.5 一面
自我介绍
为什么要读研,如果再给你一次选择你是选择留在字节还是去读研?(上来就是致命一击)
读研期间的课题,以及投的论文是怎么回事。
前端相关的就问了一个:为什么hooks不能写在if/else等语句里?(之前有看react源码,从这方面答就行)
你是怎么理解React的?(答得非常烂,建议从数据驱动 ui = f(state)、响应式 fiber + 异步可中断更新、组件化 component,hooks、跨平台 scheduler;reconciler;render;vdom,合成事件系统等方面答)
写个koa的compose:前一天晚上还写过,但一紧张,面试时全忘了,写得磕磕巴巴,最后也就写了一半吧;
算法题:二叉树最近公共祖先
用map记录一下节点信息就能出来,不过,第一个compose没写出来后面哪有心思写算法题,写得也非常磕巴,最后也是在面试官不断的提示下给了个思路
反问:具体业务
9.15 二面(挂,本来一面就该挂的)
自我介绍
聊了聊读研期间自己的课题以及论文,读研期间的收获(开拓了视野bababa的。。。)
当时实习是参与的项目,以及遇到的难点,提了一嘴当时后端用redis做缓存,然后上线期间被打挂了的事,然后就问如果要我设计这个后端系统该怎么设计(不会。。。)
你是怎么理解React的?(也是答得稀烂)
React18新特性(concurrent),其实这个自己是知道的但是答得巨鸡儿烂,甚至一些hooks的名字都叫错,还瞎说一些错误的观点
webpack treeshaking,听过,但是不会
两道算法题:
实现数组的reduce方法
忘了,好像还挺难的一个题,暴力能做,但是面试官要我想不暴力的方法(不会)
思维题:老鼠毒药问题(也不会。。。)
(估计面试官也不想为难我,最后给了个评价:“技术栈有点老”,那确实,连简历都是两年前的)
反问:具体业务,前端最新的技术有哪些?
9.20 一面(挂,这不挂就有鬼了,后面复盘都不知道自己答了些什么鬼玩意)
自我介绍(连自我介绍都开始说得磕磕巴巴,给面试官一个非常不好的印象)
问了问研究生期间的收获(答得很烂)
聊了下项目,以前实习的时候有接触到低代码平台,刚好这个面试官也是做这个的,然后就一直在问我这方面的东西,可惜差不多都忘光了。。。然后就开始瞎说瞎云,甚至开始糊弄(我都不知道什么时候染上了这种坏习惯)
介绍自己做的那几个项目
前端相关:css的flex布局
前端安全:xss,csrf,中间人攻击这些,csrf答得也贼烂,而且还一直在犟
TCP和UDP的区别
口撕:二分算sqrt(x)
算法:节流,防抖(面试官说我写的很快)
反问:低代码;如何看待现在前端的发展;快手是react用得多还是vue用得多
后面大概就是自我怀疑自我否定的阶段了吧,每天都在懊悔,都在焦虑,看书看不进去,刷题刷不进去。怎么说,10月份找上自己的好友,聊了聊前端相关的东西,调整了一波心态。
10.12 一面(面试官应该是对着题库在问,问的东西都没有难度)
自我介绍
聊了下研究生期间的课题
聊了下实习参与的项目
css的position有那些属性,简单介绍一下
实现三栏布局
讲讲flex布局常用的属性
javascript类型判断,typeof instance Object.prototype.toString Array.toString这些
javascript中的this(javascript两年前就滚瓜烂熟了,这部分都能答得很好)
javascript异步代码看输出结果(没难度)
es6相关
react中的diff算法设计思路以及与vue中的对比(看几遍源码就知道这玩意就是个暴力)
react的fiber
script标签中defer和async的区别
跨域相关(jsonp这些),以及请求预检
算法题:最长无重复子串(滑动窗)
10.19 二面(面试官是真滴帅)
自我介绍
项目具体功能的实现,如果要实现协同编辑,该如何做(emmm,当时瞎说了个方案,感觉这个协同编辑问题并不好解决)
你的c++ addon是用什么写的(node-addon-api)
react原理
http1/2/3(难得的八股)
webpack treeshaking(同样的问题不能第二次还不会吧)
定时器相关的问题,大概是一直设置定时器会不会造成栈溢出,不过我应该是听岔了,回答了浏览器中定时器的原理(setTimeout嵌套层数大于5会出现4ms的延迟,balabala。。。)
算法:实现es6中的flatten(),忘了,没写出来,面试官都看不下去了
然后换了到题:一个嵌套对象,给个id,查找其路径(简单的dfs)
反问:部门业务;vue用得多还是react用得多(vue),我主要以react为主,有点尴尬;
10.22 三面(他主要做跨端的,我不太熟,所以感觉答得不太好)
自我介绍
为啥选择前端(感兴趣呗)
两道算法题:
实现个栈(用了好几种方法实现,包括最原始的单链表),还讲了讲symbol等乱七八糟的东西
出现一次的字符串
(做完后夸我javascript写得非常好)
问了问react native 和 小程序,但我了解得不太多,只能凭感觉答
扣简历上写的低代码项目,然后就是痛苦的开始,答得其实还好,整个逻辑都捋清楚了,只是他觉得这个东西没有意义,没有解决目前生成的代码可读性差的问题(提前pua,讲道理我就造了个轮子,还想怎样,最后说我做东西没有目标性balabala的。。。)
之前在字节实习的收获
反问:没啥好问的,问了下部门情况,主要是以跨端为主
10.13 一面
写个判断JavaScript类型的函数
看你用到了Object.prototype.toString()方法,能给我介绍一下JavaScript中的Prototype吗?为什么不用Object.toString()或者Array.prototype.toString()
简单定义个TypeScript类型,例如对象的key是string类型,而value类型
介绍一下Typescript的范型
讲讲JavaScript中的事件循环
了解函数式编程吗?简单实现一个curry函数(秒了)
了解React Hook吗,它解决了怎样的问题
了解React 18的最新特性吧,讲讲concurrent是怎么回事
了解Webpack不,讲讲Webpack的打包流程
实现一个useRequest Hook,例如let {data, loading, cancel} = useRequest(url);(翻过ahook的源码,大概知道怎么回事,写起来很顺,cancel可以用调abort方法实现)
讲讲从浏览器输入url,到dns解析的流程
你觉得还有什么是你比较擅长,但我没有问到的吗(谦虚中。。。)
算法题:最长无重复子串(滑动窗)
反问:部门的业务;如果通过的话二面大概什么时候(虽然第二天就二面了)
10.14 二面(面试官看起来年纪比较大,所以问的问题有点偏八股)
自我介绍
写个css,当文本没有超过容器宽度时居中显示,超过宽度则换行,并左对齐(display:tabel-cell或者width:fit-content,但是忘了)
讲讲css的flex布局
实现下Promise.all(讲道理,别说Promise.all了,要我撕个Promise都没问题)
js闭包,this指向,es6的let/const,箭头函数等等
js异步,异步代码给输出(给的是nodejs下的,这个和浏览器有些许区别)
service worker(只是听过,知道是用来做缓存的)
场景题:设计个权限系统(emmm,这个估计答得一般,开始还以为要从后端的角度答,后面发现只要答前端逻辑就行,然后一直在回忆当时字节实习时找leader审批时的流程)
jsBridge原理(终于有面试官问这个了)
http1/2/3,http和https,协商缓存强制缓存(纯八股,没啥好说的,面试官最后评价说基础很不错)
算法题:组合总数(给个数组[1,2,3],target=8,求所有等于8的组合),dfs秒了
反问:具体业务
10.20 三面
自我介绍
为何选择前端(感兴趣)
拿了哪些offer(我个fw,像是能有offer的样子嘛)
研究生期间做的项目,以及期间接触前端的情况
实习做的项目,挑一个说(一直在问:“还有其他难点吗”,emmm,有我也回忆不起来了啊)
算法题:
版本号排序
计算对象中值是数字的总和
(两道都不难)
反问:data部门的具体业务
11.1 HR面(害,估计是答得不好,然后就没有然后了)
自我介绍
如果在给你一次机会你还会选择读研吗?(破防了,破大防了)
为什么选择读研
职业规划
如何有效沟通
在实习过程中,自己的缺点
成就感最大的时刻
data部门的具体业务知道嘛(我。。。大概知道吧)
看到你平常也有做后端,那么为什么不选择后端(我会后端那些东西完全是因为以前按小组做的项目,一组的人都太菜了,完了我就java/python/数据库这些都会了)
如果只要你做前端呢?
反问:base是哪(北京)
11.10 一面(面试官人很好,而且还和我是一个学校的)
自我介绍
介绍一下实习参与的项目
介绍自己做的那几个项目,有哪些难点
SSR和CSR的区别
前端性能指标评估
前端的ci/cd
开始聊天(因为是同一个学校的,然后慢慢就聊起来了)
反问:58还招人不;具体业务是啥
11.11 二面(秒挂)
自我介绍
职业规划(有点懵,一时间不知道怎么规划)
实习参与的项目
jsBridge之类的东西
setTimeout为啥不准(线程间通信怎么都会有延迟的)
算法题:不重复的数字
等offer的不知道第几天,焦虑,破防,看书无力,刷题无趣,论文看不进,实验不想跑,要不摆了算了。
12.02 (这个就不说了)
12.07 一面(睡过头了,而且也没收到一面的邮件,还以为没有面试来着)
自我介绍
算法题:大数相加(相减的思路也说下)
为什么选择前端,为什么不考虑算法方向(喜欢前端,还有算法是我能卷得动的吗)
介绍自己的项目,以及为啥要做(emmm,大部份都是自己有某个想法,然后就去做了,或者说尝试一些新技术之类的)
React原理相关
怎么学前端的,平常会看哪些东西
设计模式,以及用过哪些设计模式(这太多了,什么单例、观察者、发布订阅、中间(职责链)模式、原型模式等等)
Promise的原理(观察者模式)
平常看过哪些项目的源码(React、Vue、Redux、React-Router、axios、nodejs、v8这些平常都有去看过)
反问:可视化这块需要看哪些资料,如何学习
12.09 二面
自我介绍
为什么选择前端
职业规划等等
算法题:含有4个元素的数组,删除其中一个数能获得最大整数(很简单的题)
Electron原理有了解吗(老实说只会搭壳子,顶多再封装些C++ addon)
React 并发渲染,setState更新流程(有点忘了)
前端优化相关,缓存除了indexDB、service worker、localStorage外还知道别的不(面试官提了个memory cache)
介绍做的几个项目,遇到的难点或者坑
js的for in和for of区别,如何把一个对象变成可迭代对象(实现[Symbol.iteractor]属性)
反问:具体业务,React多还是Vue用得多(Vue);可视化这块该怎么学
12.17 HR面
自我介绍
家庭情况,父母对你的影响
对base有什么要求
在校担任职务(本科和研究生都是副班长)
在校期间的其他经历
个人爱好(打游戏,喜欢研究游戏里面的一些机制,喜欢写游戏攻略,在某个玩家论坛上也有1w多粉丝之类的)
喜欢看什么书
实习的收获
读研期间的收获,举个具体的例子
期望薪资
反问:无
12.07 一面(面试官是个小姐姐,还以为前端没有女生,而且人特别好)
自我介绍
在字节实习是参与的项目
定时器原理setTimeout/setInterval(以前翻过v8的源码,本质上都是二叉堆,与react里的scheduler的实现有异曲同工之处)
js异步(答得比较多,而且自己对协程也有些许研究,然后就从异步非阻塞io、事件循环等一直展开说了)
react和vue的区别(从实现原理上答的)
react有没有什么缺点(能没有缺点吗,死怼运行时,hooks凭啥不能写在if/else里,useXXX到底怎么个use法,过期闭包,依赖全得手动写,如果用eslint那么里面用过的都会要你加到依赖数组里)
react hooks为啥不能写在if/else里(底层实现就是个链表,一个有序的东西)
前端优化相关(平常也就是一些通用优化比如离线化、缓存之类的)
计算机网络相关
TCP和UDP,三次握手和四次挥手(四次挥手早忘了)
websocket的原理(只知道用,原理不清楚)
看哪些书,如何了解前端的新东西(我。。。推特上关注了尤大大和Dan,没事就看他们发推,各种公众号,掘金之类的,书籍的话,es6标准入门,红宝书都看了不下4遍、webkit技术内幕、nodejs来一打c++扩展等等)
算法题:挑一个自己比较擅长的标签,我。。。半个多月没刷题了,题感不一定还有,就说了个滑动窗
滑动窗口的最大值(直接一道hard,而且以前做的时候也是单调队列做的,现在也忘了怎么写,就暴力写了一遍)
实现个LRU(写到一半,然后到时间了,就把没写的思路给说了一遍,整体不难)
反问:具体业务;跟我说可以入职了自己选,甚至做后端客户端都行;
12.08 二面(面试官应该就是我的leader了,人也特别好,就是最后说加我微信没加)
自我介绍
了解美团优选吗(简单点进去看过)“准备得不充分啊”
为什么选前端(兴趣,以及有ui设计天赋)
拿了哪些offer(我。。。都在泡着)
低代码相关(以前实习时有简单参与这个)
如何看待裁员(我。。。提升自己的竞争力吧,即使不幸被裁了也能去其他公司做自己感兴趣的东西)
如何提升自己的竞争力
学过的计算机课程
“计算机基础和前端方面你希望我问你哪个”(想都没想就说前端,然后面试官说了一句非常在理的话)
“你作为科班出身,如果不熟悉计算机基础的东西,只会前端,那和那些外包有什么区别”(说的太在理了,然后就开始带上痛苦面具,毕竟上次看这些东西还是在9月份)
OSI五层模型,分别介绍
物理层(研究生做的课题偏通信,所以能拓展出非常多物理层的东西,包括信源编码、调制、发射机硬件等等)、数据链路层、网络层、传输层、应用层
列举一些使用tcp和udp的应用层协议,http(tcp)、websocket(tcp)、http3(udp),为啥http3会用udp
为啥不选择算法,而选择前端(算法我卷不过别人)
https相关,证书验证流程,为什么会出现中间人攻击
如果线上某个页面不显示了,可能是哪些问题(dns劫持,但我不太了解这个)
cdn原理(不会,只能笼统的答)
别的可能有点忘了,反正都是些计算机网络的东西
算法题:
组合总数,和字节那个一样,但是,有负数,这就只能暴力写了,可惜没有转过弯来,一直在想怎么剪枝
如果给你发offer,你来吗(我。。。给我发了我就来)
反问:具体业务;“来了的话你想做什么都行”;可以选上海吗;“上海招满了,所以只能来北京,而且北京互联网公司多呀”;
12.13 HR面
自我介绍
为什么选择读研
你成绩很好,是保研的吗(早知道就不保研了)
实习期间最大的挑战
实习期间部门同事对你的评价(评价都还不错,但是leader以及其他几个同事都劝我留在字节,甚至转正能冲ssp。PS:我当时就该留在字节)
字节实习一年的收获
读研有哪些收获
期望薪资(其实没啥好期望的,哪怕是个白菜价我也能接受,毕竟fw一个)
如果给你发offer你来吗?(态度肯定且坚定,给offer就签)
有同学在美团吗(本科实验室的挺多都还留在美团)
反问:无;
最后offer开的也还行,不是白菜价,知足了,而且一面二面面试官特别nice,加上本科挺多同学还在美团的,城市也是自己以前熟悉的城市,没啥好拒绝的,毕竟今年形式就这样,后面老老实实写毕业论文吧~
一面(两轮)
第一个面试官
自我介绍
数据结果基础知识,什么链表、栈、队列、广搜、深搜、树、堆、图反正全给说了一遍
OSI五层网络模型
介绍一下自己做的项目
实习期间参与的项目
(最后评价,基础非常扎实,然后很优秀balabala)
第二个面试官
自我介绍
为啥学前端
介绍一下自己做的项目
实习期间参与的项目
实现个三栏布局
如果app里面实现个页面,react native和纯webview哪个更好
场景题:线上的某个页面加载慢,如何优化
笔试算法:黄金矿工,大概就是在二叉树上做dp
然后挂了
12.14 一面
自我介绍
实习参与的项目
说说es6的新语法
react fiber
react hooks能实现类里面的所有生命周期吗
webpack、vite、rollup适用场景
less/sass解决了什么问题(模块化,当时忘了这个点)
“你前端基础很不错,我也不多问了,你还有什么想问我的嘛”
反问:腾讯云智具体业务;技术栈;春招还会开嘛;
期间也不知道收到了多少封感谢信,明明笔试全a,但就是感谢信,甚至小米凌晨两点还给我发了两封感谢信,有一段时间是自我否定到了极点,也不知道活着的意义是啥。。。看看春招还有没有机会,再多尝试尝试吧。。。
#秋招面试经验##前端应届生##前端开发工程师面经##如何看待2023届秋招#