百度前端实习凉经(含答案)

人生的一份实习好难找啊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)

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值