算法题
1、JS 实现两个大数相加?
let a = "9007199254740991";
let b = "1234567899999999999";
function add(a ,b){
//...
}
解法:
let a = "9007199254740991";
let b = "1234567899999999999";
function add(a ,b){
//取两个数字的最大长度
let maxLength = Math.max(a.length, b.length);
//用0去补齐长度
a = a.padStart(maxLength , 0);//"0009007199254740991"
b = b.padStart(maxLength , 0);//"1234567899999999999"
//定义加法过程中需要用到的变量
let t = 0;
let f = 0; //"进位"
let sum = "";
for(let i=maxLength-1 ; i>=0 ; i--){
t = parseInt(a[i]) + parseInt(b[i]) + f;
f = Math.floor(t/10);
sum = t%10 + sum;
}
if(f == 1){
sum = "1" + sum;
}
return sum;
}
2、.斐波拉数列:0 1 1 2 3 5 8 13 21…
用动态规划去解,递归的话性能太低,可以看看这篇文章
function fn(n){
if(n<3){
return n-1;
}
var left = 0; // 左边的数据
var right = 1; // 右边的数据
var sum = 0;
for(var i = 3 ; i <= n ; i++){ // 循环从第3项开始(临界条件)
sum = left + right; // 计算前一次左右数据的和
left = right; // 把前一次的right赋值给下一次的left
right = sum; // 把前一次的和赋值给下一次的right
}
return sum;
}
接下来问请求相关的
1、http发请求过程
2、请求方式以及一些区别
3、状态码
4、问请求头响应头有哪一些属性,content-type之类的
前面三点还好,第四点实在能力有限,迷迷糊糊答了几个,深度也就到这了
Vue相关
因为现在主要是使用Vue的,所以面试官就开始问Vue的原理,果然是大厂,挖深度,从浅到深。
我按我的理解讲了一遍Vue的原理,从中面试官提出了一些问题
1、mvvm模式,view、modal哪个是被监听和监听者
2、definedproperty这个方法,除了get\set还有什么属性(。。。。没有然后了)
css\js动画的了解
css动画工作中没怎么用过。还有js动画这块能力超纲了啊,说到什么帧数之类的
canvas、echarts
canvas画布原理、对echarts源码的了解,这块一时语塞,会用但是没去看过源码,Vue源码都还没看透呢。。。。。
点赞一下字节跳动的面试官,人还是很好的,最后问有什么想问的,然后面试官给我分享了他的职业心得,跟我说要多沉淀技术。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 cfseo1997@163.com,本站将立刻删除。