饿了么春招 Java后端暑期实习 笔试算法题
今天参加了饿了么得春招实习笔试,题量为8道3分单选,7道3分多选,3道编程题共55分,总分100,现时100分钟。
选择题考的范围有基础知识(设计模式等),算法,mysql语句以及常识等,有一定难度。由与时间不够,我就没有记录具体的题目。
接下来看编程题:
1、给定一个只有大小写字母构成的字符串s,下标从1开始,给定一个正整数k,将字符串s的每个k的倍数位(k, 2k, 3k, ...)进行大小写替换,其他位无论大小写,均用ASCII码替换。
例如:k = 2,s = aABbcC,将k的倍数位(即2,4,6)位大小写替换,其他位(即1,3,5)位用ASCII码替换,结果为97a66b99C。
我的思路是定义一个结果字符串result,对s从头到尾遍历,将每一位变换后的结果加到result中。(当时突然忘了将整数转换为字符串的函数怎么写,就干脆自己定义了一个函数,将字母对应的ASCII码转换为字符串)。代码有点臃肿,但是还是过了。
2、给定正整数n,找到最小的正整数m,使得n被m整除,且n/m是质数。如果不存在满足题意的m,返回0。
并不难,从1到n进行遍历,找到满足题意的m即可,若遍历完没有满足题意的m,输出0就行。
3、给定n台设备,编号从1到n,第 i 台设备拥有的资源量为ai。现有如下操作,从n台设备中任选k台,将这k台设备拥有的资源异或运算后的结果称为这k台设备的资源异或,求出这n台设备的资源异或和。
例如:n = 3,k = 2,a[] = {6,6,17}。
选设备1和2,得出6 xor 6 = 0,
选设备1和3,得出6 xor 17 = 23,
选设备2和3,得出6 xor 17 = 23,
于是这n台设备得资源异或和为0+23+23=46。
没做出来,没什么思路。本人是个菜鸡,编程题做出两道已经谢天谢地了。剩下的就看运气了。
希望能帮到大家!也欢迎大佬给点建议,到底是专门花点时间准备笔试,还是继续背八股准备面试?(本人接下来的几个月时间应该都会花在找暑期实习上)