前端笔试题

438 阅读3分钟

​一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第7天, ​

 记录一些笔试的题目

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<style>
  .item {
    width: 150px;
    height: 150px;
    display: flex;
    border-radius: 16px;
    justify-content: space-between;
    background-color: rgb(248, 246, 246);
    box-shadow: 2px 2px 2px black;
  }

  .a {
    width: 30px;
    height: 30px;
    border-radius: 50%;
    margin: 10px;
    background-color: black;
  }

  .item .a:nth-of-type(2) {
    align-self: center;
  }

  .item .a:nth-of-type(3) {
    align-self: flex-end;
  }
</style>

<body>
//用flexbox实现一个三点的骰子
  <div class="item">
    <span class="a"></span>
    <span class="a"></span>
    <span class="a"></span>
  </div>
</body>

</html>
<script>
   //题一,定义一个方法实现如下功能:传入一个 string 类型的参数,然后将传入的 string 每个字符之间加上一个空格 作为结果返回。例如传入“abc”,返回“a b c”;
  let str = "abc"
  let a = str.split("").join(" ")
  console.log(a);
  //题目二,假如有以下自定义的方法: function log(){ var args = 
    Array.prototype.slice.call(arguments); args.unshift('(gykj)'); 
    console.log.apply(console,args); }; 如果执行这个方法如 log(‘hello’,’world’)会得到什么结果?
  function log() {
    // call和apply改变this指向,但是call可以有多个参数,apply要用数组存
    var args = Array.prototype.slice.call(arguments)
    /*
      这能将有length属性的对象转换为数组,若方法中再次包含函数方法,则该嵌套函数指向全局。不能获取到本对象中的属性。
    
    */
    console.log(args);
    args.unshift('(gykj)');
    console.log.apply(console, args);
    /*
    封装的console.log
    就可以直接拿来用了,为什么要使apply再指向console呢?
    是因为我们其实还是要使用console.log()这个方法来做输出,只不过每次输出的内容不一样,这里的内容就是arguments。
    很明显在这个封装的方法中传入的参数是不确定的,并不确定你要在控制台输出什么东西,所以传入的参数就无法预知,这也就是call(单个字符串)和apply(数组)的区别,所以这个时候就要用到arguments对象了,官方的说法:
    arguments 是一个对应于传递给函数的参数的类数组对象。
    arguments对象不是一个 Array 。它类似于Array,但除了length属性和索引元素之外没有任何Array属性。
    arguments在封装的方法中,是作为一个实参传递给了log()方法,例如:logInfo('hello','world'),那么arguments就是['hello','world'],使用console.log.apply(console,arguments)主要是用来把arguments中的每个参数都作为实参来传递给console.log()的。
    这个方法那么会将arguments作为一个数组进行打印输出,而不是将其中的每一项作为参数传递给console.log()进行输出,很明显,上例的结果并不是我们想要的,我们想要的结果是这样的1,2 3,而apply()就正好可以实现这个需求。
    */
  }
  log('hello', 'world')


//题目三,如果定义一个对象如下: var User = { count : 1, getCount : function() { return this.count; }运行以下代码将会得到什么结果?(在 console 语句后面填写结果) console.log(User.getCount()); //结果: var func = User.getCount; console.log(func()); //结果:
  var User = {
    count: 1, //如果是一个对象内存在方法,则该方法this指向当前对象。
    getCount: function () {
      return this.count
    }
  }
  console.log(User.getCount()); //输出1
  var func = User.getCount
  console.log(func());//输出undefined
</script>

有如下一个 div 和样式定义,请问显示的 div 有没有边框?

#test {border : none;}

.test {border : solid 1px #000;}

id选择器>类选择器 所以没有边框

如下代码中文本“Sausage”的颜色是?

  • Milk
  • Sausage

#awesome .favorite:not(#must-buy) .highlight {

color: red;

}

#awesome .highlight:nth-of-type(1):nth-last-of-type(1) {

color: blue;

}

答:蓝色,第一个样式 是所有非#must-buy的.highlight的字体颜色为红色,第二个样式是#awesome下的highlight第一个元素和倒数第一个元素为蓝色

GET 跟 POST 的区别,何时使用 POST 更合适?

GET:一般用于信息获取,使用URL传递参数,对所发送信息的数量也有限制,一般在2000个字符。
POST:一般用于修改服务器上的资源,对所发送的信息没有限制。

GET方式需要使用 Request.QueryString 来取得变量的值。
POST方式通过 Request.Form 来获取变量的值。
也就是说 Get 是通过地址栏来传值,而 Post 是通过提交表单来传值。

在以下情况中,请使用 POST 请求:

无法使用缓存文件(更新服务器上的文件或数据库)
向服务器发送大量数据(POST 没有数据量限制)
发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠


VUE 中 v-model 是什么?怎么使用? vue 中标签怎么绑定事件?结合问题用代码写出具体实例

你可以用 v-model 指令在表单 <input><textarea> 及 <select> 元素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素。尽管有些神奇,但 v-model 本质上不过是语法糖。它负责监听用户的输入事件以更新数据,并对一些极端场景进行一些特殊处理。

注意需要在js的data选项中声明初始值

{{something}}

说出至少 4 种 vue 当中的指令和它的用法?

v-if 指令用于条件性地渲染一块内容。这块内容只会在指令的表达式返回 truthy 值的时候被渲染。

v-show 的元素始终会被渲染并保留在 DOM 中。v-show 只是简单地切换元素的 CSS property display

v-for 指令基于一个数组来渲染一个列表。v-for 指令需要使用 item in items 形式的特殊语法,其中 items 是源数据数组,而 item 则是被迭代的数组元素的别名

v-bind 指令可以用于响应式地更新 HTML attribute

按要求用代码写一个简单的 ajax 示例:

接口地址 http://202.102.22.135:8080/text_project/manage_list/,

需要传递的参数(格式:字符串):manage.type, username

需要在 header 传 token

tip:这里没给token只能随便写了,不知道对不对

 $.ajax({
      type: 'POST',
      contentType: 'application/json',
      url: 'http://202.102.22.135:8080/text_project/manage_list/',
      data: {
        manage: {
          type: 'get'
        },
        username: 'admin'
      },
      beforeSend: req => {
        req.setRequestHeader('token', token)
      },
      success: res => {
        console.log('aa');
        console.log(res);
      }
    })