10.13途虎前端笔试

选择题

问了数据库、计网、linux,操作系统。都是一两道。其他的大部分是前端问题。 体验感觉还不错

编程题

1. 货物上架 100%

货物编号target(如7) 上架到货物上面,每个物品只有一个,编号唯一。货架是按照升序排列。

要求:1. 货物如果在架子上,则返回目前的index值

2. 如果不在架子上,则返回货物上架后的index值

3. 时间复杂度logn

思路:就是二分法,感觉就是签到题

输入:nums=[1,3,5,8] target=4

输出: 2 [1,3,4,5,8] 4的index是2

function searchInsert( nums ,  target ) {
	if(nums.length<=0){
		return 0
	}
    // write code here
	if(nums.indexOf(target)!=-1){
		return nums.indexOf(target)
	}else if(target<nums[0]){
		return 0
	}else if(target>nums[nums.length-1]){
		return nums.length
	}else{
		// 此时货架上肯定没有该物品
		let r=0,l=nums.length;
		while(r<l){
			let mid = r+Math.floor((l-r)/2)
			if(nums[mid]<target&&nums[mid+1]>target){
				return mid+1
			}
			else if(nums[mid]<target){
				r = mid
			}else if(nums[mid]>target){
				l = mid
			}
		}
	}
}

2. 运送轮胎 60%

有三堆轮胎,工人汽车每次可以运送2个轮胎,要求每堆每次最多只能拿走1个轮胎。运送轮胎到终点则加1分。如果有两堆以上轮胎为0,则游戏结束。求最大分数值

输入:[2,4,6] 输出:6 先拿2,6的 拿完是 [0,4,4] 再拿4,4的 拿完是[0,0,0] 总分数应该是2+4

思路:感觉很简单啊,存到数组内然后排序,第一次排序把第一项的值加上,最后一项的值-=第一项的值,第一项的值=0。然后进行第二次排序,把第二项的值加上,最后一项的值-=第二项的值,第二项的值=0。不知道思路哪里有问题,总觉得自己没错。

function computeMaxScore( a ,  b ,  c ) {
    // write code here
	let nums = [a,b,c]
	let res = 0
	nums.sort((a,b)=>a-b)
	res+=nums[0]
	nums[2]-=nums[0]
	nums[0]=0
	nums.sort((a,b)=>a-b)
	res+=nums[1]
	nums[2]-=nums[1]
	nums[1]=0
	return res
}

3. 排列最大 66.6%

一个数组[1,2,3,4,50,6] 要求里面的数排列组合起来成一个最大的值。结果可能非常大,需要返回string类型。

输入:[1,30,4,9] 输出:'94301'

思路:首先判断每个数的首位是不是最大的,比如'90'的第一位是9 那这个数肯定排前面。 也有可能碰到'93'这样的数,这个时候93就应该放前面。极端的情况都想了一遍,比如[99,991,9991,99991] 输出的话应该是'99999919991991'。还是不知道为啥只过了66.7。

function largestNumber( toys ) {
    // write code here
	let res = ''
	while(toys.length){
		let temp=null
		for(let i=0;i<toys.length;i++){
			if(temp!=null){
				// 992 993
				if(Number(String(toys[temp])[0])>Number(String(toys[i])[0])){
					
				}else if(Number(String(toys[temp])[0])==Number(String(toys[i])[0])){
					// 99 991
					let l = 1,r=1;
					let temp_l = String(toys[temp])
					let temp_r = String(toys[i])
					while(l<temp_l.length&&r<temp_r.length){
						if(temp_l[l]==temp_r[r]){
							l++
							r++
						}else if(Number(temp_l[l])>Number(temp_r[r])){
							// 99 91
							temp=temp
							break;
						}else if(Number(temp_l[l])<Number(temp_r[r])){
							temp=i
							break;
						}
					}
					if(l==temp_l.length&&r<temp_r.length){
						temp=temp
					}else if(l<temp_l.length&&r==temp_r.length){
						temp = i
					}
				}else{
					temp = i
				}
				
			}else{
				temp=i
			}
		}
		if(temp!=null){res += toys[temp]}
		toys.splice(temp,1)
	}
	return res
	// 9999191
	// 9991991
}

#途虎##途虎养车##笔试##途虎前端##途虎笔试#
全部评论
第三题,3 30 34 的顺序考虑。其实只用自己手写sort排序的比较就可以了
1 回复 分享
发布于 2022-10-20 01:01 四川
第二题,2,4,4的情况,你代码会输出4,但是答案是5
点赞 回复 分享
发布于 2022-10-19 09:01 广东
这个怎么知道通过百分之几啊?是提交保存下面显示的嘛?我提交并保存显示通过全部示例是全部通过还是通过他给的那几个测试案例啊?
点赞 回复 分享
发布于 2022-10-18 20:40 浙江

相关推荐

点赞 评论 收藏
分享
咦哟,从去年八月份开始长跑,两处实习转正都失败了,风雨飘摇,终于拿到offer了更新一下面试记录:秋招:多部门反复面试然后挂掉然后复活,具体问了啥已经忘了,只是被反复煎炸,直至焦香😋春招:base北京抖音hr打来电话说再次复活,准备面试,gogogo北京抖音一面:六道笔试题:1.promise顺序2.定义域问题3.flat展开4.并发请求5.岛屿数量算法(力扣)深度,广度都写6.忘记了,好像也是算法,难度中等其他问题多是框架底层设计,实习项目重难点~~~秒过😇北京抖音二面:三道笔试题:(为什么只有三道是因为第三道没做出来,卡住了)1.中等难度算法(忘记啥题了,应该是个数组的)2.认识js的继承本质(手写继承模式,深入js的面相对象开发)3.手写vue的响应式(卡在了watch,导致挂掉)---后知后觉是我的注册副作用函数写得有问题,有点紧张了其他题目多是项目拷打,项目亮点,对实习项目的贡献~~~第二天,挂,but立马复活转战深圳客服当天约面深圳客服一面:六道笔试题,由于面过太多次字节,面试官叫我直接写,不用讲,快些写完😋,具体都是些继承,深拷贝(注意对数组对象分开处理,深层次对象,循环引用),加中等难度算法题~~~秒过深圳客服二面:口诉八股大战:大概囊括网络,浏览器渲染原理,动画优化,时间循环,任务队列等等(你能想到的简单八股通通拉出来鞭尸😋)算法题:笔试题6道:1:找出数组内重复的数,arr[0]-arr[n]内的数大小为[1-n],例如[1,2,2,3,3]返回[2,3],要求o(n),且不使用任何额外空间(做到了o(n),空间方面欠佳,给面试官说进入下一题,做不来了)2:原滋原味的继承(所以继承真滴很重要)3:力扣股票购买时机难度中等其他滴也忘记了,因为拿到offer后鼠鼠一下子就落地了,脑子自动过滤掉可能会攻击鼠鼠的记忆😷~~~秒过深圳客服三面:项目大战参与战斗的人员有:成员1:表单封装及其底层原理,使用成本的优化,声明式表单成员2:公司内部库生命周期管理成员3:第三方库和内部库冲突如何源码断点调试并打补丁解决成员4:埋点的艺术成员5:线上项目捷报频传如何查出内鬼成员6:大文件分片的风流趣事成员7:设计模式对对碰成员8:我构建hooks应对经理的新增的小需求的故事可能项目回答的比较流利,笔试题3道,都很简单,相信大家应该都可以手拿把掐😇~~~过过过无hr面后续煎熬等待几天直接hr打电话发offer了,希望大家也可以拿到自己心仪的offer
法力无边年:牛哇,你真是准备得充分,我对你没有嫉妒,都是实打实付出
查看19道真题和解析
点赞 评论 收藏
分享
评论
点赞
5
分享

创作者周榜

更多
牛客网
牛客企业服务