人生的一份实习好难找啊T T
自我介绍,略。
项目相关,占了面试差不多快一半的时间。
一、输出一个10位的斐波那契数列,并输出最后一位数的值。
eg:Fibonacci(10); 输出[1,1,2,3,5,8,13,21,34,55], 55。
解法很多,说下我的思路,先创建一个长度为n的数组res,该数组全由1填充(因为前俩值为1,不想一个一个定义)。从第三项开始向后遍历,每一项是前两项的合并覆盖res中对应下标的1。遍历结束后,再多输出最后一位数即可。
var finalNum
function myFibonacci(n) {
let array = new Array(n).fill(1); //设定初始值
for (let i = 0; i < array.length; i++) {
if (i < 2) continue; //从第三项开始
else {
array[i] = array[i - 1] + array[i - 2];
}
}
finalNum = array[array.length - 1] //额外输出最后一个数
return array;
}
console.log(myFibonacci(10));
二、数组都有哪些方法并说明其用途?
arr.splice(start, length, insert_one....):在原数组上进行删除、添加、替换元素等操作。start为删除元素的下标,length为要删除的元素个数,insert_one及之后的参数为重新插入的数据,插入位置为start,返回值为删除元素所组成的新的数组。
arr.slice(start, end):截取数组的片段,start为起始位置(包括),end为结束位置(不包括),不会改变原数组,返回值是截取的数组片段。
arr.join():将每个元素都用给定的连接符连接。只有一个参数,不输入,默认用逗号分隔,返回值为连接后的字符串。
arr.concat('a', 'b', arr1):连接两个或多个数组。不会改变原数组,若传给concat的是一个数组则会将该数组中的元素衔接到arr后,而不是数组本身,但这样的扁平化操作只会进行一次。
arr.sort():在适当的位置对数组进行排序,并且返回数组。默认按照元素第一位的ASCII码从小到大排列,常用:arr.sort((a, b) => a - b) 升序排列 b - a降序排列。
还有reverse()、forEach()、toString()、pop()、shift()、unshift()、push()等,就不一一详解了。
三、列举你知道的伪元素和伪类选择器并说明为什么要叫“伪”?
伪类选择器: :hover :link :vistied :active
伪元素选择器: ::after ::before
伪类和伪元素是因为hover、after并不是DOM元素的id、class,即实际上并没有叫这个名字的DOM元素故称作“伪”,hover、after只是表明了一定的逻辑关系,通过这种关系去选择一个类或是某个元素。
四、CSS样式实现
一个大盒子里面装三个小盒子,让三个小盒子水平均分布局,并说明flex布局有哪些属性,作用是什么,justify-content属性中space-between、around、evenly分别有什么区别?
between是两边贴边,中间均分;
around是均分,假设边元素离边界为10px,则中间元素两两之间间隔为20px;
evenly也是均分,假设边元素离边界为10px,则中间元素两两之间间隔为10px。
<style>
.boxA {
width: 800px;
height: 800px;
display: flex;
justify-content: space-between;
align-items: center;
}
.boxB {
width: 200px;
height: 100%;
background-color: red;
}
.boxC {
width: 200px;
height: 100%;
background-color: lightgreen;
}
.boxD {
width: 200px;
height: 100%;
background-color: yellow;
}
</style>
<div class="boxA">
<div class="boxB"></div>
<div class="boxC"></div>
<div class="boxD"></div>
</div>
五、HTTP属于什么层协议?传输层知道哪些协议?FTP与UDP区别?
HTTP属于应用层协议,传输层协议FTP、UDP
FTP是面向连接的,是可靠的,建立连接需要先进行三次握手确认双方的收发能力,断开连接需要进行四次挥手来确保没有数据包的丢失,每个包都带有序列号,保证了包之间的顺序,也防止了丢包。
UDP是面向无连接的,谁都可以给它发数据,它也可以给任何人发数据,甚至同时传给多人,且不会根据网络情况进行拥塞控制,无论是否丢包,都会发,但这在直播、游戏时很常用。UDP处理简单,不需要大量的数据结构、处理逻辑和报头字段。
六、反问
可能还有些小问题,记不太清了,总之题目比较简单,但只会做题没有用!!实习经历、项目经历很重要很重要很重要,面试官给的意见是多做一些GitHub上的大型项目,网上找的那些学习用的小demo还是不够看的。(不知道自己还要写多少凉经hhh)