竹笋

首页 » 问答 » 灌水 » 没事真别裸辞,除非你做好了这些准备
TUhjnbcbe - 2023/1/3 4:18:00

最近很多朋友跟我谈起裸辞的事,无非都是年中绩效不满意、公司问题多、老板不喜欢、职业发展受限等等原因,作为一个前端工程师,辞职跳槽也属常事,在实力允许的情况下,薪资自然也会翻一番,但是在辞职之前,一定要有所准备,看透这些面试题,做到胸有成竹,offer自然不会少。

一:记忆化斐波那契函数(Memoization)

题目:斐波那契数列指的是类似于以下的数列:

1,1,2,3,5,8,13,....

也就是,第n个数由数列的前两个相加而来:f(n)=f(n-1)+f(n-2)

请你完成fibonacci函数,接受n作为参数,可以获取数列中第n个数,例如:

fibonacci(1)//=1fibonacci(2)//=1fibonacci(3)//=2

测试程序会从按顺序依次获取斐波那契数列中的数,请注意程序不要超时,也不要添加额外的全局变量。

本题来源:《JavaScript语言精髓》

答案:

constfibonacci=((memo=[0,1])={constfib=(n)={letresult=memo[n]if(typeofresult!==number){result=fib(n-1)+fib(n-2)memo[n]=result}returnresult}returnfib})()

二:解析字串

题目:完成一个extractStr函数,可以把一个字符串中所有的:到.的子串解析出来并且存放到一个数组当中,例如:

extractStr(Mynameis:Jerry.Myageis:12.)//=[Jerry,12]

注意,:和.之间不包含:和.。也即是说,如果::abc..,则返回[abc]。

(本题来源:《JavaScriptCookbook》)答案:

constextractStr=(str)={constret=str.match(/:([^:\.])*?\./g)

[]returnret.map((subStr)=subStr.replace(/[:\.]/g,))}

三:safeGet

题目:有时候我们需要访问一个对象较深的层次,但是如果这个对象某个属性不存在的话就会报错,例如:

vardata={a:{b:{c:ScriptOJ}}}data.a.b.c//=scriptojdata.a.b.c.d//=报错,代码停止执行console.log(ScriptOJ)//=不会被执行

请你完成一个safeGet函数,可以安全的获取无限多层次的数据,一旦数据不存在不会报错,会返回undefined,例如:

vardata={a:{b:{c:ScriptOJ}}}safeGet(data,a.b.c)//=scriptojsafeGet(data,a.b.c.d)//=返回undefinedsafeGet(data,a.b.c.d.e.f.g)//=返回undefinedconsole.log(ScriptOJ)//=打印ScriptOJ

答案:

constsafeGet=(o,path)={try{returnpath.split(.).reduce((o,k)=o[k],o)}catch(e){returnvoid}}

四:判断两个矩形是否重叠

题目:用一个对象的数据来表示一个矩形的位置和大小:

{x:,y:,width:,height:}

它表示一个宽为高为的矩形在页面上的(,)的位置。

请你完成一个函数isOverlap可以接受两个矩形作为参数,判断这两个矩形在页面上是否重叠。例如:

constrect1={x:,y:,width:,height:}constrect2={x:,y:,width:,height:}isOverlap(rect1,rect2)//=true

答案:

//原理:

1
查看完整版本: 没事真别裸辞,除非你做好了这些准备