2020春招笔试题——美团点评

发布时间:2025-05-11 03:14

美食分享平台推荐:美团点评、大众点评、抖音美食频道 #生活乐趣# #生活分享# #品质生活点滴# #美食分享平台#

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

问:

变量i,s,a在堆还是在栈中?

第8行执行完后a.i的值是什么?

参考答案

i,s,a都在栈中,new出来的对象A在堆上。

执行完后a.i的值还是字符串op。

考察点:堆内存、栈内存、参数传递

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

1234567891011121314151617

答案:foo, foo2, global

解析:

考察点3个:
1、输出顺序主要考察:Event Loop;
2、第一个和第三个输出考察:this指针;
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)); 12345678910111213

答案:bfcad

考察点:主要考察js event loop以及宏任务和微任务;

// 定时器任务属于宏任务,并且需要先在任务队列等待,等到同步任务执行完,执行栈清空,才会在任务队列中按顺序选任务进去 setTimeout(() => console.log('a'));//4. 打印a //Promise 属于异步微任务,在本轮同步任务结束之前执行 Promise.resolve().then( // 1. 打印 b () => console.log('b') // 单引号要改为',然后去掉;号 ).then( // 箭头函数的resolve传递的参数作为下一个then的参数 () => Promise.resolve('c').then( // 执行箭头函数 (data) => { // 把定时器任务也放入任务队列中等待,在第一个定时器之后 setTimeout(() => console.log('d')); //5. 打印d // 2.打印 f console.log('f'); // 此时返回的 数据作为下一个then的参数 return data; } ) ).then(data => console.log(data)); // 3.打印 c

12345678910111213141516171819202122

4.请写出下面ES6代码编译后所生成的ES5代码;

class Person { constructor (name) { this.name = name; } greet () { console.log(`Hi, my name is ${this.name}`); } greetDelay (time) { setTimeout(() => { console.log(`Hi, my name is ${this.name}`); }, time); } } 12345678910111213

答案:
ES6语法糖理解,ES6编译到ES5过程理解,JS原型理解,this指向理解;

var Person = (function () { function Person (name) { this._name = name; } Person.prototype.greet = function () { console.log(“Hi, my name is “ + this._name); } Person.prototype.greetDelay = function (time) { var _this = this; setTimeout(function () { console.log(“Hi, my name is “ + _this.name); }, time); } })(); 1234567891011121314

5.形如1, 1, 2, 3, 5, 8, 13, 21, 34, 55的数列,后一位是前面两位相加(斐波那契数列),写出函数要求找到第 N 位是多少,如:fib(3) => 3 , fib(5) => 8, 要求时间复杂度为O(n)。

function fib(n){ let top=1,bottom=0,res=0 for(let i=0;i<n;i++){ res=top+bottom bottom=top top=res } return res } 123456789

6.近期某商场由于周年庆,开启了“0元购”活动。活动中,消费者可以通过组合手中的代金券,实现0元购买指定商品。

聪明的小团想要用算法来帮助他快速计算:对于指定价格的商品,使用代金券凑出其价格即可,但所使用的代金券总面额不可超过商品价格。由于代金券数量有限,使用较少的代金券张数则可以实现价值最大化,即最佳优惠。

假设现有100元的商品,而代金券有50元、30元、20元、5元四种,则最佳优惠是两张50元面额的代金券;而如果现有65元的商品,则最佳优惠是两张30元代金券以及一张5元代金券。

请你帮助小团使用一段代码来实现代金券计算。

while(true){ var num = parseInt(readline()) if(num==0){ break } var lines =readline() var lineArr = lines.split(" ").map(Number) var type = lineArr[0] var money = lineArr.slice(1) console.log(getResult(num,type,money)) } function getResult(num, type, money) { var dp = [] dp[0]=0 for (var i = 1; i <=num; i++) { var arr=[] for(var j=0;j<money.length;j++){ if(i>=money[j]){ arr.push(dp[i-money[j]]+1) } } dp[i]=Math.min(...arr) } return dp[num]==Infinity?"Impossible":dp[num] }

123456789101112131415161718192021222324252627

7.给定一个包含非负整数的 M x N 迷宫,请找出一条从左上角到右下角的路径,使得路径上的数字总和最小。每次只能向下或者向右移动一步。

var rowCol = readline().split(" ").map(Number) var row = rowCol[0] var col = rowCol[1] var matrix = [] while(line = readline()){ var arr = line.split(" ").map(Number) matrix.push(arr) } print(fistResult(row,col,matrix)) function fistResult(row, col, matrix) { var sum = 0 var dp = [] for (let i = 0; i < row; i++) { dp[i]=[] for (let j = 0; j < col; j++) { if (i == 0 && j == 0) { dp[0][0] = matrix[0][0] } else if (i == 0 && j != 0) { //j为0只能向右移动 dp[i][j] = dp[i][j - 1] + matrix[i][j] } else if (i != 0 && j == 0) { //i为0只能向下 dp[i][j] = dp[i - 1][j] + matrix[i][j] } else { //i、j都不为0取向下向右最小的 dp[i][j] = Math.min(dp[i - 1][j], dp[i][j - 1]) + matrix[i][j] } } } return dp[row - 1][col - 1] }

1234567891011121314151617181920212223242526272829303132333435

8.小团在一次星际旅行中,耗尽了飞船的能量,迷失在了空间魔方中,空间魔方中有NNN个能量粒子。美团云AI迅速帮小团分析出了空间魔方的能量分布图。

已知小团的飞船被困在能量值最高的点,能量值最高点有且只有一个。飞船每到达一个能量粒子就会吸收对应粒子的能量,该粒子会坍缩成小黑洞,飞船不可到达。小团驾驶的飞船只能从高能粒子驶向低能粒子,且每次只能从6个方向中选择一个前进。(±x,±y,±z)。

请帮助帮小团吸收最高的能量值。

#include<iostream> (720)#include<vector> #include<algorithm> (831)#include<math.h> using namespace std; int n;int max_eng=0; int se[6][3]={{0,0,1},{0,0,-1},{0,1,0},{0,-1,0},{1,0,0},{-1,0,0}}; void dfs(vector<vector<vector<int>>> &vec,int i,int j,int z,int e) { e=e+vec[i][j][z]; for(int k=0;k<6;k++) { int a=i+se[k][0],b=j+se[k][1],c=z+se[k][2]; if(a<0||b<0||c<0||a==n||b==n||c==n||vec[a][b][c]==-1||vec[i][j][z]<=vec[a][b][c]) continue; int temp=vec[i][j][z];vec[i][j][z]=-1;//设置访问记号,并且保留当前值 dfs(vec,a,b,c,e); vec[i][j][z]=temp; } max_eng=max(max_eng,e); //跳出循环说明6个方向都没法了,即到达终点 //仅需在某条路的终点与最大值比较即可 } int main() { cin>>n;if(n==0) {cout<<0;return 0;}//注意判断n为0的情况 vector<vector<vector<int>>> vec(n,vector<vector<int>>(n,vector<int>(n,0))); int i,j,z,e;int num=pow(n,3);int m_i,m_j,m_z,m_e=0; while(num--) { cin>>i>>j>>z>>e;vec[i][j][z]=e; if(e>m_e) {m_i=i,m_j=j,m_z=z,m_e=e;} } dfs(vec,m_i,m_j,m_z,0); cout<<max_eng; system("pause"); return 0; }

12345678910111213141516171819202122232425262728293031323334353637

网址:2020春招笔试题——美团点评 https://www.yuejiaxmz.com/news/view/953168

相关内容

美团点评招股书全文
行业笔面试试题
笔试题库热门文章
资产评估师试题《资产评估实务二》考点摘录
2020江苏公务员面试模拟题:年轻人面临的生活压力
2024年郑州厨具市场集团招聘笔试冲刺题(带答案解析).pdf
【笔试】银行校招,信息科技岗 & 金融科技岗笔试准备方向
2020交通银行招聘面试技巧
育婴师招聘笔试题(某大型集团公司)必刷题详解.docx
生活部招新面试问题

随便看看