前端笔试题小结(一)

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)这条输出语句是最后执行的

前端笔试题小结(一)相关推荐

  1. 前端笔试题面试题记录(上)

    前言 过完元宵,就到上海找了波工作,现在已经入职好了,蹭波热点,写一波面试记录,内容包含笔试题和面试题,还有一些没有写进来,准备再开一篇,许久没写了,写的确实有些慢.如果喜欢的话可以点波赞,或者关注一 ...

  2. 前端笔试题面试题记录(下)

    前言 接上篇前端笔试题面试题记录(上).趁清明小长假,把上篇剩下的部分也写一下,因为最近比较忙这篇已经拖了很久了.现在刚刚开始银四了,应该还是有些小伙伴在找工作,时间还不算太晚,希望本篇可以帮到这些小 ...

  3. 也许你需要点实用的-Web前端笔试题

    之前发的一篇博客里没有附上答案,现在有空整理了下发出来,希望能帮助到正在找工作的你,还是那句话:技术只有自己真正理解了才是自己的东西,共勉. Web前端笔试题 Html+css 1.对WEB标准以及w ...

  4. 前端笔试题【1】--从字符串的第二个字符开始对数组进行排序

    前一段时间做过一个阿里的前端笔试题:从字符串的第二个字符开始对数组进行排序.当时没想到简单的方法,这几天看书才发现sort()还可以自定义一个比较函数,郁闷啊啊啊~~ 看来基础还是不够扎实啊, 赶紧记 ...

  5. 2017网易前端笔试题总结

    整理了一下2017网易前端笔试题,附上了自己的答案,仅供参考,欢迎讨论和交流.如果有什么不对的地方,欢迎指正. 题目整理(不含答案) 网盘分享: 链接: https://pan.baidu.com/s ...

  6. html5 笔试题 选择题,2019拼多多前端笔试题

    选择.填空题: 1.IP地址,子网掩码的计算 2.Internet网络层重要协议 3.http请求方法 4.HTML中a标签的伪类 5.alert(undefined==null)的输出结果 6.ht ...

  7. 美团2023年春招在线前端笔试题回忆版

    提示:题目不一定完全正确,只能说给大家参考会考察哪些知识点. 文章目录 前言 一.单选(计算机基础知识) 二.专项选择 三.编程题 1. 某地有一个火车站如下图所示,小红很好奇火车是怎么驶进驶出的,然 ...

  8. 小红书2020校招前端笔试题卷三

    小红书2020校招前端笔试题卷三题目地址 第一题 第一题我做错了以为是选错误的 第二题 第三题 解: JS中的执行机制(setTimeout.setInterval.promise.宏任务.微任务), ...

  9. 关于document学习笔记及涉及的前端笔试题

    Document 文档子节点 document.documentElement 始终指向HTML页面中的<html>元素 document.body 始终指向<body>元素 ...

最新文章

  1. HDU2034 人见人爱A-B
  2. PTA实验作业-01
  3. Redis之Hash数据结构
  4. 从零构建vue+webpack (一)
  5. github网站证书里的别名
  6. 原子设计_您需要了解的有关原子设计的4件事
  7. 一个女程序员征男友的需求说明书
  8. Map的两种遍历方法
  9. 三星的S3C2440A 存储器控制器
  10. linux I/O 栈 预习(上)
  11. Shiro之UsernamePasswordTokenRememberMeAuthenticationTokenAuthenticationToken
  12. python size(0)_对x.view(x.size(0), -1)的一些理解
  13. python实现决策树归纳_决策树【python实现】
  14. CloudStack之nfs
  15. verilog实现多周期处理器之——(六)简单算数操作指令的实现
  16. Maven中DependencyManagement和Dependencies区别
  17. 如何用matlab计算不确定度,Matlab计算“间接测量物理量的不确定度”
  18. matlab:pause命令
  19. Golang优秀开源项目汇总
  20. 修炼“七字诀”的小米——读《小米创业思考》

热门文章

  1. 《Java8实战》笔记(03):Lambda表达式
  2. 密码学专题 非对称加密算法指令概述 RSA
  3. 北京大学 软件工程1 软件 软件工程 软件开发 软件工程框架
  4. LInux学习笔记(四)-----实操排雷
  5. 提高程序员职场价值的10大技巧
  6. 公司技术管理角度看C++游戏程序员发展
  7. wince ./configure
  8. mysql查询报错: ORDER BY clause is not in GROUP BY..this is incompatible with sql_mode=only_full_group_by
  9. Spring 之注解事务 @Transactional
  10. 1566:基础练习 十六进制转八进制