前端笔试题小结(一)

前端笔试题小结(一)

2020-03-13
题目一:
将一个js数组去重。
样例:
输入:[ 1, “apple”, 3, “a”, 3, 1, 5, 6, “a”, 4 ]
输出:[ 1, “apple”, 3, “a”, 5, 6, 4 ]

分析1:
将两个数组循环嵌套一个个的比较是否相等,如果此元素没有雷同,则把它放入新的数组中。

function test(arr){let arr2 = [arr[0]];for (let i = 1; i < arr.length; i++) {let repeat = false;for (let j = 0; j < arr2.length; j++) {if (arr[i] == arr2[j]) {repeat = true;break;//跳出for的嵌套循环}else{}}if (!repeat) {arr2.push(arr[i]);}}return arr2;}console.log(test([1, "apple", 3, "a", 3, 1, 5, 6, "a", 4]));//结果为[1, "apple", 3, "a", 5, 6, 4]

分析2:
将一个数组中的元素进行排序,然后对前后元素进行比较,结果放入新的数组中。

function test2(arr){var formArr=arr.sort();var arr2=[formArr[0]];for (let i = 1; i < formArr.length; i++) {                if (formArr[i]!= formArr[i-1]) {arr2.push(formArr[i]);                  }}return arr2;}console.log(test2([1, "apple", 3, "a", 3, 1, 5, 6, "a", 4]));//结果为[1, 3, 4, 5, 6, "a", "apple"]

其中,let主要定义块级变量,只在定义的区域内有效。var定义全局变量或函数变量。

js的三等于号和双等于号区别:双等于号属于一般比较,可以自动转化数据类型,三等于号表示恒等于,比较的两边要绝对的相同先判断类型,如果不是同一类型直接为false。


更新:

2020-03-14
题目二:
问:
1.变量i,s,a在堆还是在栈中?
2.第8行执行完后a.i的值是什么?

class A {String i = "op";void func(String s) {s = ""+9;}static void test() {A a = new A();a.func(a.i);}
}

答案:
(1) i,s,a在栈中,new出来的对象A在堆上。
(2) 执行完后a.i的值还是字符串op。
解析:
1、考察js堆与栈:栈内存主要用于存储各种基本类型的变量,包括Boolean、Number、String、Undefined、Null以及对象变量的指针,堆主要存储object
所以字符串变量i,s以及对象指针a都存在栈中,new出来的对象开辟内存存在堆上,对应地址是指针a存的内容
2、考察参数传递按值传递:a是A类的实例,所以a.i=‘op’,a.func(a.i)这句执行函数,把a.i作为参数传递,该函数会复制一个变量,两个变量完全独立,所以在函数体里只是把复制的那个变量(一个新的局部变量)改变为’op9’,在函数体外的a.i并没有被改变

题目三:
请按顺序写出打印结果,并说明原因。

var name = 'global';
var obj = {name: 'local',foo: function(){this.name = 'foo';}.bind(window)
};
var bar = new obj.foo();
setTimeout(function() {console.log(window.name);
}, 0);
console.log(bar.name);var bar3 = bar2 = bar;
bar2.name = 'foo2';
console.log(bar3.name);

答案:foo,foo2,global
解析:
‘foo’ //bind返回一个函数,该函数体中的this绑定到window上,然后new对该函数进行构造调用,返回一个新对象,函数体中的this指向该对象。bind是硬绑定,new绑定的优先级高于硬绑定。所以this还是绑定在bar这个新对象上。this.name='foo’就是bar.name=‘foo’
‘foo2’ //复杂类型值地复制是引用复制,bar3、bar2和bar指向的都是同一个对象,所以bar2.name='foo2’对对象的属性进行修改时,bar3和bar的数据同样收影响
‘global’ //setTimeout设置一个定时器,定时器到时后调用回调函数,但定时器到时后只能将回调的执行放到事件队列的末尾,不能插队,所以console.log(window.name)这条输出语句是最后执行的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/449285.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2019-3-1

伪静态: .html url(^page/(?P<id>\d).html/$,views.page,namepages) /page/1|2|3.html/ | {% url pages 1|2|3 %} 3.request对象 --method,GET,POST --FILES,META,body,path,get_full_path(),is_ajax(),COOKIE,session 4.CBV处理请求的另外一种方式 from django.…

java 使用 new Date() 和 System.currentTimeMillis() 获取当前 时间戳

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 在开发过程中&#xff0c;通常很多人都习惯使用new Date()来获取当前时间。 使用起来也比较方便&#xff0c;同时还可以获取与当前时间…

持币过节也能让钱生钱

今天是国庆长假前最后一个交易日。从盘面上看&#xff0c;投资者包括部分基金公司减仓明显。对于目前大盘高位震荡&#xff0c;很多人选择落袋为安&#xff0c;持币过节&#xff0c;不失为明智之举。但你知道吗&#xff0c;持币过节也能让钱生钱。今天我就来为各位讲讲其中的奥…

关于cat命令修改文件内容(导入变量符号以及变量内容)

关于cat命令修改文件内容&#xff08;导入变量符号以及变量内容&#xff09; cat >1.txt<<END $11 $22 $1 $2 END 查看文件内容为&#xff1a; [rootserver04 ~]# cat 1.txt 1 2[rootserver04 ~]# 说明导入的$1,$2自动被解析了。但是当我们想输入一些变量而不被解析…

Android - AsyncTask你知道多少?

http://www.cnblogs.com/qlky/p/5658070.html 为什么asyncTask最好在主线程初始化&#xff1f;在子线程怎么办&#xff1f; AsyncTask四个方法的执行顺序&#xff1f; mWorker和mFuture对象分别是什么&#xff1f;有什么作用&#xff1f;和doInbackground还有postExecute有什么…

2020-3-15

题目一&#xff1a; 问答 请写出如下代码运行后产生的结果&#xff0c;并给出解释&#xff0c;说明结果是如何得出的。 setTimeout(() > console.log(a)); Promise.resolve().then(() > console.log(b);).then(() > Promise.resolve(c).then((data) > {setTimeout…

Kong-dashboard 安装 启动运行

Kong Dashboard 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 Kong is a scalable, open source API Layer (also known as a API Gateway, or API Middleware). Kong runs in front o…

自动让钱生钱方法100%安全稳定

中国区网友问题&#xff1a;   手里有一些余钱&#xff0c;希望找一个方法能够让钱自动生钱。最好不要让我烦心的&#xff0c;能够自动操作。并且不能有风险&#xff0c;本钱绝不能有风险&#xff0c;利润要很丰厚才可以。像银行存款、股票基金就不要介绍了。因为前者生钱太慢…

linux lnmp15 部署laravel项目

使用composer创建一个 laravel项目 安装composer&#xff1a; https://www.jianshu.com/p/ce1d36cbe00f composer create-project laravel/laravel5.5.* --perfer-dist /home/web/blog 复制代码添加虚拟主机配置文件 sudo lnmp vhost add 复制代码注&#xff1a;由于laravel的入…

ReentrantLock源码

ReentrantLock与Synchronized区别在于后者是JVM实现&#xff0c;前者是JDK实现&#xff0c;属于Java对象&#xff0c;使用的时候必须有明确的加锁(Lock)和解锁(Release)方法&#xff0c;否则可能会造成死锁。 先来查看ReentrantLock的继承关系(下图)&#xff0c;实现了Lock和Se…

2020-3-16

题目一&#xff1a; 如何用js获取checked属性值。 通过checked属性可以设置复选框或者单选按钮处于选中状态。 <!DOCTYPE html> <html> <head> <meta charset" utf-8"> <script> window.onload ()>{let ckdocument.getElementByI…

让钱生钱!商人赚钱的6条方法

钱&#xff0c;这个是做商人第一件需要了解的东西&#xff0c;如何让钱生钱呢 商人须知&#xff1a; 1、赚钱第一要手上有余银&#xff0c;倒买倒卖相信大家见多了把&#xff0c;手上最好有100W&#xff0c;最少也要50W&#xff0c;如果没有&#xff0c;就先积累哪么多&#xf…

【转】Snackbar和Toast的花式使用,这一篇就够了

https://www.jianshu.com/p/e023bfb6466b 转载于:https://www.cnblogs.com/tc310/p/10679042.html

解决报错: No candidates found for method call XXXX (方法没有调用者)

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 No candidates found for method call XXXX 报错如题&#xff0c;指 xxx 这个方法 没有调用者。 我是要直接返回一个 PageImpl 对象…

装饰器概念及运用

#!/user/bin/env python3# -*-encoding"utf-8"-*-# 1.装饰器概念#装饰器本身就是函数&#xff0c;为别的函数添加附加功能。把握两个遵循的条件。# 1.不修改被修饰的源代码内容。# 2.不修改被修饰函数的调用方式。# 装饰器高阶函数函数嵌套闭包# 高阶函数定义:# 1.函…

2020-3-17

题目一&#xff1a; JavaScript 获取倒数第二个li元素 如何利用JavaScript获取li元素集合中的倒数第二个元素。 <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <style type"text/css"> #box{list-style:none;font-…

java.lang.UnsupportedOperationException 异常分析

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 今天将一个数组转换成 List 然后进行 remove 操作时却抛出 java.lang.UnsupportedOperationException 异常。 String pattern " ^,…

『并发包入坑指北』之阻塞队列

前言 较长一段时间以来我都发现不少开发者对 jdk 中的 J.U.C&#xff08;java.util.concurrent&#xff09;也就是 Java 并发包的使用甚少&#xff0c;更别谈对它的理解了&#xff1b;但这却也是我们进阶的必备关卡。 之前或多或少也分享过相关内容&#xff0c;但都不成体系&am…

个人理财有哪些基本原理和方法?

现金为王&#xff1a;不超额消费&#xff0c;不使用信用卡&#xff0c;不负债&#xff08;房贷除外&#xff09; 信贷消费已经成为主流的今天&#xff0c;强调使用现金似乎与时代格格不入。而对于信贷消费的依赖&#xff0c;常常来自于下面几个看起来十分有力的观点&#xff…

2019年3月4日 701. Insert into a Binary Search Tree

比较基础的二叉树排序树插入&#xff0c;写了个递归。# Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val x # self.left None # self.right Noneclass Solution(object):def insertIntoBST…