字节前端二面(实习)(已过)
一面是正式岗,二面转到实习岗了。
全程40min。
CSS
问题1:css的display属性的三个属性值block,inline和inline-block有什么区别?
答:①块元素独占一行,行内元素可以一行显示多个。②块元素可以设置宽高,行内元素不能设置宽高,只能靠内容撑开。③行内块元素一行可以显示多个,可以设置宽高。
JS
问题1:简单数据类型和复杂数据类型的区别?
答:简单数据类型的值直接保存在栈中,而复杂数据类型的值保存在堆中,栈中保存的只是复杂数据类型的堆内存地址。
问题2:简单数据类型有哪些?
答:ES5中有number,string,null,undefined,boolean,ES6新增了symbol(表示独一无二的值,它是JS的第七种数据类型,是一种类似于字符串的数据类型)。
问题3:ES6的bigint听过吗?
答:BigInt 是一种内置对象,它提供了一种方法来表示大于 253 - 1 的整数。这原本是 Javascript中可以用number表示的最大数字。BigInt 可以表示任意大的整数。上MDN链接 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/BigInt
问题***循环机制?
答:上个笔记,推荐个看着很直观的视频 https://www.bilibili.com/video/BV1kf4y1U7Ln?from=search&seid=4718267925810638285&spm_id_from=333.337.0.0
问题5:事件冒泡?
答:hh已经写腻了,如果想看答案可以翻翻以前的帖子。
问题6:线程与进程的关系?JS为什么是单线程的?
答:①线程是包含在进程中的,线程其实就是一个指令序列,如果加上计算机分配给它的资源(如内存等)之后它就是一个进程。②可以设想一个场景:JS是多线程的,如果几个线程同时对一个DOM节点进行操作,浏览器该怎么处理呢?为了避免这种冲突JS设计为单线程。
计网
问题1:HTTP的请求方法?get,post的区别?
答:有很多种,最常见的是get和post,还有其他的比如HEAD,PUT,DELETE等(具体参考HTTP权威指南)。get,post区别推荐阅读 https://www.cnblogs.com/logsharing/p/8448446.html
编程题
先是把一面没写出来的一题给写了。
题目2:查找重复元素:找出数组中重复出现过的元素(不考虑返回顺序)
我的解法:遍历一遍,如果有重复出现的元素就加入res数组中,最后再对res去个重。
写完面试官说时间复杂度比较高(O(n^2)),可以用哈希表,一次遍历记录出现次数,就可以把时间复杂度降下来(O(n))
var findRepeatChar = function(arr) { const len=arr.length; const hash=new Map(); //遍历一次记录每个元素的出现次数 for(let i=0;i<len;i++){ if(!hash.has(arr[i])){ hash.set(arr[i],1); }else{ let count=hash.get(arr[i]); count++; hash.set(arr[i],count); } } //找出重复出现的元素并返回 const res=[]; for(let key of hash.keys()){ if(hash.get(key)!==1){ res.push(key); } } return res; }; console.log(findRepeatChar([1,2,4,4,3,3,1,5,3]));
题目3:这题我好像在ES6书上看过,但是不记得了,就老老实实说不会ES6hhh