1.(问答题)
题目描述

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在堆还是在栈中?
  2. 第8行执行完后a.i的值是什么?

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

2.(问答题)
请按顺序写出打印结果,并说明原因。

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);

第10行的console是在定时器函数中,因此最后执行。
首先输出第12行bar调用name,由于第8行var bar = new obj.foo(); new绑定的优先级大于bind绑定,所以函数内部this还是obj {},输出foo。
再输出第16行console.log(bar3.name),bar3=bar2=bar,bar3/bar2/bar都是指向同一个对象,因此输出bar中的foo2。
最后输出定时器里的window.name,即global。

参考JS的this问题;JS this指向总结
哪个对象调用函数,函数里面的this指向哪个对象。
this 主要是在函数中使用,在函数外使用,一律指向全局对象。
在函数内使用 this 时,具体指向是由函数的调用方式决定,而不是根据函数定义方式决定。

  1. 函数作为普通函数运行时,可以看做是当做全局对象的方法运行,此时 this 指向全局对象
  2. 函数作为对象的方法调用时,函数内的 this 指向该对象
  3. apply call bind 改变 this 指向,bind 不会受到 apply 和 call 影响,bind优先级最高。一旦经历过bind函数,后面全输出bind指向的值。
  4. 定时器setTimeout设置的函数,this 会指向全局。bind 强制绑定优先级最高,不受定时器影响。
  5. ES6 箭头函数
    ES6 的箭头函数没有自己的 this 和 arguments, 因此在箭头函数内部使用 this 和 argments, 其实使用的是外层的 this 和 arguments。由于箭头函数没有自己的this,所以当然也就不能用call()、apply()、bind()这些方法去改变this的指向。优先级高于bind

3.(问答题)
题目描述
请写出如下代码运行后产生的结果,并给出解释,说明结果是如何得出的。

setTimeout(() => console.log('a'));
Promise.resolve().then(() => console.log('b’);).then(() => Promise.resolve('c').then((data) => {setTimeout(() => console.log('d'));console.log('f');return data;})).then(data => console.log(data));

b f c a d 解析戳此

JS的setTimeout和Promise——同步异步和微任务宏任务
这一次,彻底弄懂 JavaScript 执行机制(这一篇我看的最明白,

牛客_美团点评2020校招前端笔试题(仅个人学习记录)相关推荐

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

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

  2. 美团点评2020校招前端方向笔试题

    五:斐波那契数列 代码 #include <iostream> #include <cstring>using namespace std; typedef long long ...

  3. 小红书2020校招前端笔试题卷一

    题目1-下列说法正确的是()多选 A: requestAnimationFrame(foo) 确保使浏览器在下一次重绘之前调用 foo 方法B: 在 addEventListener 的处理方法中使用 ...

  4. 小红书2020校招数据分析笔试题卷四 解析

    小红书2020校招数据分析笔试题卷四 解析 单选题 多选题 填空题 简答题 题目来自小红书2020校招数据分析笔试题卷四 单选题 如果在小红书商城中某一商户给一产品定价,如果按照全网最低价500元定价 ...

  5. 小红书2020校招算法笔试题卷一

    小红书2020校招算法笔试题卷一 字符串倒序 薯队长带着小红薯参加密室逃脱团建游戏,首先遇到了反转游戏,小红薯们根据游戏提示收集了多个单词线索,并将单词按要求加一个空格组 成了句子,最终要求把句子按单 ...

  6. 为了OFFER系列 | 牛客网美团点评数据分析刷题

    @Author:Runsen 对于大学的每一个阶段,都有着不同的意义,在大学期间一定要有明确的战略.打法,以及人生布局,才能最大程度的提升自己,才能在未来走的更远. 现如今大四,为了OFFER,冲啊 ...

  7. 美团点评2020校招笔试练习

    梯度消失产生的主要原因有:一是使用了深层网络,二是采用了不合适的损失函数. (1)目前优化神经网络的方法都是基于BP,即根据损失函数计算的误差通过梯度反向传播的方式,指导深度网络权值的更新优化.其中将 ...

  8. 【2020牛客网笔试整理】小红书笔试题

    薯队长写了一篇笔记草稿,请你帮忙输出最后内容. 1.输入字符包括,"(" , ")" 和 "<"和其他字符. 2.其他字符表示笔记内容 ...

  9. 【美团点评2020校招测试方向笔试题】算法题部分1.删除字符 2.队列组合排序 3.寻找最小子字符串 4.最大矩形 5.最短送餐路程计算

    做题网址:点击进入 1.[编程题]删除字符 将给定的字符串,按照规则删除字符,输出删除后的字符串.删除规则为:相同字符连续,则删除,如"aaaab"删除后的字符串为"b& ...

最新文章

  1. hadoop学习-stream-Top K记录
  2. Python编程基础:第七节 字符串切片String Slicing
  3. yii框架cookie写入与读取方法
  4. 【转】使用手势对UIImageView进行缩放、旋转和移动
  5. 使用vscode连接阿里云服务器报错: ssh: Could not resolve hostname Name or service not known
  6. Citrix StoreFront无法正常初始化
  7. 报错Failed to load config “prettier“ to extend from.?两步解决方案
  8. C语言书中例题错误,C语言例题错误了吗?
  9. STM32驱动LCD1602程序(调试已成功)
  10. Freeswitch连接SIP软电话
  11. git commit 参数详解 --amend
  12. Ubuntu 14.04 卸载搜狗拼音输入法及后续问题解决
  13. cascading 使用_欢迎使用Cascading 2.0 –减轻Hadoop困境的开源API
  14. [cesium] | 城市警情模拟
  15. 储罐液位计算机控制系统,罐区管理系统
  16. [嵌入式基础]-arm架构和x86架构区别
  17. visio拉动线条总是保持直线状态
  18. win2008r2 安装 .net core 报错
  19. WordPress常见问题及其解决方法
  20. golang 超好用 json 解析包

热门文章

  1. 巴西法律和税收报告以及其他法律要求》》》本质上是一种税务监控手段;
  2. 安卓 Fragmen(静态注册和动态注册)
  3. 【IT项目管理】第七章课后习题
  4. 【Matlab人脸识别】形态学教室人数统计(带面板)【含GUI源码 1703期】
  5. zookeeper单机及集群部署,附安装包下载(二)
  6. Liquibase集成达梦数据库、Activiti集成达梦数据库
  7. Joshua Porter谈优秀的UI设计原则
  8. 在线制作"篆体印章",很酷!
  9. java Steam流的用法
  10. CloudCompare:点云间重叠区可视化对比