牛客面经每日一总结(六)

简介: 牛客面经每日一总结(六)

ES6中两个对象的合并有几种方法


  • Object.create()


网络异常,图片无法展示
|


  • Object.assign()


  • {...obj1, ...obj2}


JSON可以序列化哪些值


序列化之后,他会自动删除值为函数,undefined, Symbol值的属性。


const obj = {
      bar() {
        return 1
      },
      a: null,
      b: undefined,
      c: Symbol()
    }
    const info = JSON.parse(JSON.stringify(obj)) // {a: null}。null是可以被序列化的


手写ajax


// 创建一个http请求对象
    if (window.XMLHttpRequest) { // Mozilla, Safari, IE7+ ...
        httpRequest = new XMLHttpRequest();
    } else if (window.ActiveXObject) { // IE 6 and older
        httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
    }
    // 接收响应对象
    httpRequest.onreadystatechange = function(){
        if (httpRequest.readyState === 4) {
          if (httpRequest.status === 200) {
            alert(httpRequest.responseText);
          } else {
            alert('There was a problem with the request.');
          }
        }
    };
    // 发送数据
    httpRequest.open('GET', 'http://www.example.org/some.file', true);
    // send中发送post请求数据。
    httpRequest.send();


遍历数组的方法中有哪些是不能中断的


一些高阶方法都不可以中断。forEach, map, every, some, find, reduce等等。


正常的for循环都可以中断。for, for in, for of。


解释一下你认为的h5


他并不是指HTML5标准,而是一种解决我们现代网页制作的方案。


H5实际上是一个解决方案,不仅包含了HTML5新增的audio标签,canvas,拖拽特性,本地存储,websocket通信,同时也包括了盒模型,包括绝对定位,包括一切前端的基本知识。


是按照 HTML5 规范实现的页面,其中用到了许多新的特性。


https是否可以被拦截


???如果要我回答,拦截是肯定可以拦截的,但是数据都被加密,不会被破解。


会被抓包,HTTPS 只防止用户在不知情的情况下通信被监听,如果用户主动授信,是可以构建“中间人”网络,代理软件可以对传输内容进行解密。


css的引入方式


  • 行内样式(行间样式、内联样式、行嵌样式):  在网页元素上通过 style="" 属性直接写样式。


  • 内部样式表:  在网页上创建嵌入的样式表,通常写在 <head></head> 里面。style标签中。这里的样式是html解析器解析的,所以边解析css,边解析html,可能会出现闪屏现象。


  • 链入外部样式表:  将网页链接到外部样式表。先创建一个 CSS 文件,再在 HTML 中通过 <link> 链接此 CSS 文件。一般写在 <style></style> 的前面。link可以异步去加载css,不需要等待dom解析完毕。


  • 导入外部样式表:  通过 @import 引入其他的 CSS 文件。写在style标签中。@import 需要网页结构完全载入以后加载样式文件。


比较一下上面这些引入方式的权重。


行内样式 > 内部样式 == link引入 > @import


所以内部样式和link方式引入的css,后者覆盖前者的样式。然后再看其选择器的权重。


给span设置margin, padding有效吗


padding是个方向都是有效的。但是margin上面方向不生效。


< img style="400px !important"/>怎样修改宽高为300px


注意max-width权重大于width。


img {
      transform: scaleX(0.75);
    }
    img {
      box-sizing: border-box;
      padding: 0 50px;
    }
    img {
      max-width: 300px !important;
    }


https使用的是对称加密还是非对称加密


在生成pre-master时,使用的是非对称加密,最后通过client-random, service-random, pre-master使用的是对称加密。


还有就是在生成数字签名的使用的是非对称加密。


语义化标签有哪些, 语义化标签的行内标签有哪些


article, aside, details, figcaption, figure, footer, header, main, mark, nav, section, summary, time。


行内标签


  • abbr:缩写


  • em:强调


  • strong:粗体强调


  • mark:突出显示的文本


  • b:粗体


  • i:斜体


  • big:大字体


  • small:小字体


  • sup:上标


  • sub:下标


  • del:被删除的文本


  • strike:删除线


  • s:删除线


  • ins:被插入的文本


  • u:下划线


  • time:日期/时间


  • cite:引用


  • q:短引用("")


  • font:字体设定


css可以实现哪些交互事件


  • checked 表单元素被选中的元素


  • focus 选中表单聚焦的元素


  • link 未移入时的状态


  • visited 表示用户已访问过的链接状态


  • hover 引入后的状态



css动画有哪些属性


animation-name


定义动画的名称,@keyframes会根据名称来执行那个标签的动画。


animation-duration


定义动画的持续时长。


animation-timing-function


定义动画的过度曲线。


animation-delay


定义动画延迟多少秒执行


animation-iteration-count


动画重复的次数。一般为infinite,表示无限次。


animation-direction


动画的方向。就是每次动画结束后,怎么进行下一次动画。


  • normal:每个循环内动画向前循环,换言之,每个动画循环结束,动画重置到起点重新开始,这是默认属性。


  • alternate:动画交替反向运行,反向运行时,动画按步后退,同时,带时间功能的函数也反向,比如,ease-in 在反向时成为 ease-out。计数取决于开始时是奇数迭代还是偶数迭代


  • reverse:反向运行动画,每周期结束动画由尾到头运行。


  • alternate-reverse: 反向交替,反向开始交替。动画第一次运行时是反向的,然后下一次是正向,后面依次循环。决定奇数次或偶数次的计数从 1 开始。


animation-fill-mode


确定动画在执行之前和之后这两个阶段应用的样式。就是表示动画执行结束后,他所处的状态。


  • none当动画未执行时,动画将不会将任何样式应用于目标,而是已经赋予给该元素的 CSS 规则来显示该元素。这是默认值。就是使用该元素非动画的样式值,不适用任何动画时的样式值。


  • forwards目标将保留由执行期间遇到的最后一个关键帧计算值


  • backwards动画将在应用于目标时立即应用第一个关键帧中定义的值。并在animation-delay期间保留此值并不是我认为的在动画期间保留动画之前的值。


  • both动画将遵循forwardsbackwards的规则,从而在两个方向上扩展动画属性。就是在animation-delay使用的是0%状态下的动画样式,在动画结束时,使用的是100%状态下的样式值。


animation-play-state


确定动画是否正在播放。


  • paused暂停当前动画。


  • running,这个是默认值。 执行当前动画。


http / 1.1的纯文本传输与http / 2的二进制协议有什么区别


这还是在b站一up模拟面试看见的。他解释的是纯文本最后也使用的是二进制传输,并且会将每个头字段的换行符而转为二进制,增加了传输的带宽。


null==0是 false 还是true  null>=0 返回啥呢?


null == 0 // false
    null >= 0 // true


null只有和undefined才会为true, null和其他值==比较时,都是false。


  • == 两边的操作数,最后都会通过ToNumber来将其转换为number类型进行比较。


  • 如果操作数是对象类型,那么将通过ToPromitive来将其转为基本数据类型,然后再通过ToNumber来转为数字进行比较。


如果null做大小比较时,他会被转为0。所以null >= 0为true。因为调用了Number方法,但是对于undefined就都为false。因为undefined被Number转换后为NaN。


git


我使用git主要就是将我的项目推送到github上。


//在github中创建一个远程仓库
    //在本地克隆仓库
    git clone 地址
    //创建项目架构
    //将文件添加到暂缓区
    git add .
    //查看文件状态
    git status
    //将文件提交到本地
    git commit -m "文件介绍"
    //将文件提交到远程仓库
    git push -u origin master
    //接下来写是业务代码
    //创建分支
    git checkout -b 分支名
    //......该分支业务完成
    //提交子分支代码到远程仓库
    git checkout 子分支
    //查看处于哪个分支
    git branch
    //将该分支写的代码放入缓存区
    git add .
    //将该分支提交到本地
    git commit -m '...分支完成'
    //提交该分支到远程仓库
    git push -u origin 子分支名称
    // 下面一部分的代码一定不能和上面调换
    //将分支合并到主分支
    git checkout master
    git merge 子分支名称
    //将合并后的master分支提交到本地
    git commit -m "...完成"
    //提交更新后的主分支
    git push


css预处理器说一下


CSS 预处理器是一个能让你通过预处理器自己独有的语法来生成CSS的程序。


代码混合,嵌套选择器,继承选择器等。


sass, less, stylus, postcss。


pnpm


  • 包的安装速度非常快。


  • 磁盘空间利用非常高效(基于内容寻址)。


  • 不会重复安装同一个包。


  • 即使一个包的不同版本,pnpm 也会极大程度地复用之前版本的代码。


  • 支持 monorepo monorepo 的宗旨就是用一个 git 仓库来管理多个子项目,所有的子项目都存放在根目录的packages目录下,那么一个子项目就代表一个package


  • 安全性高。因为npm,yarn管理包是扁平化的,所有的依赖都放在顶层的node_modules下,即使package.json中未指定的包,也会放在node_modules中,项目中如果引用了这些包,将会造成不必要的安全问题。具体请看这里


相关文章
|
10月前
|
XML JSON JavaScript
|
10月前
|
前端开发
牛客刷题Day3
牛客刷题Day3
61 0
|
10月前
|
JavaScript 前端开发
牛客刷题Day3(三)
牛客刷题Day3(三)
65 0
|
10月前
|
移动开发 前端开发 JavaScript
牛客刷题Day4
牛客刷题Day4
69 0
|
11月前
牛客刷题
牛客刷题
69 0
牛客刷题(buhui/(ㄒoㄒ)/~~)
牛客刷题(buhui/(ㄒoㄒ)/~~)
牛客刷题(buhui/(ㄒoㄒ)/~~)
|
前端开发 算法 JavaScript
牛客面经每日一总结(四)
牛客面经每日一总结(四)
|
消息中间件 存储 Web App开发
牛客面经每日一总结(二)
牛客面经每日一总结(二)
|
资源调度 算法 网络协议
牛客面经每日一总结 (八)
牛客面经每日一总结 (八)

热门文章

最新文章