友塔游戏技术岗笔试-4.17

先说结果:四题过了半题少一点。
结论:菜是原罪。
第一题:输入一个1000位以内的整数,再输入一个100以内的整数,求两数乘积。(具体题目不是这个,意思是这样,其他题目类似)
思路:大数相乘,原本大数加法都搞半天,直接跳过了。菜是原罪。

第二题:完全二叉树求n个节点的最近祖先节点。
输入:一个整数N表示完全二叉树的节点,接下来N个不重复的由大小写字母组成的节点值,再输入一个整数M表示需要查找的M个节点,接下来M个节点值。
输出:最近公共祖先。
思路:假定完全二叉树节点又一个下标,从1开始递增。比如完全二叉树A B C D E F G可以对应1,2,3,4,5,6,7。如果求E,F,G(5,6,7)的最近祖先,
只需要将对应的下标,即5,6,7转成二进制表示,找出这些二进制字符串的从头开始的最长公共子串,再将其转回整数,再找到整数(即下标)对应的map节点的key值。
结果:只过30%。最后放代码,是我写的唯一一题。菜是原罪。

第三题:一个整型数组,从左往右开始取值,后取到的数不能比前面大,求出和最大的取值(只要输出最大的和)。
思路:以为很简单,其实没思路。菜是原罪。

第四题:Dota英雄卡尔已经切好了三种元素(可以相同),剩下一些魔法值,求出卡尔接下来能最多使用多少个不同的技能。切换元素不消耗魔法,各种技能组合共十种(只有十种说明元素顺序与技能无关),每一种都需要各自的魔法值(值多少忘了,可以自己设定)。
第四题大概的意思是这样,因为我看到这里已经心里发慌了,写肯定是没写,自己脑补吧。菜是原罪。
以上就是我的菜之四重打击,我直到后面还有很多重,可能是跟自己年龄有关系吧,比较都29了,还TM本科毕业生,技术菜人老珠黄,其实我也不知道是不是年龄的问题,更多的是希望是自己菜的原因。这是第一次写面经,希望大家一起学习。最后附上第二题的代码,我今天早上又测试了几次,感觉没错呀。
package 友塔游戏;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        String str;
        Map<String ,Integer> map = new HashMap<>();
        for(int i=1;i<=n;i++){
            str = sc.next();
            map.put(str,i);
        }
        int x = sc.nextInt();
        String strings[] = new String[x];
        for(int i=0;i<x;i++){
            strings[i]=sc.next();
        }
        sc.close();
        System.out.println(solution(map,strings));
    }

    public static String solution(Map<String,Integer> map,String[] strings ){
        int n = strings.length;
        String strArray[] = new String[n];
        int tempNum = 0;
        int minLenth = Integer.toBinaryString(map.get(strings[0])).length();
        for(int i=0;i<n;i++){
            int temp = map.get(strings[i]);
            String tempStr = Integer.toBinaryString(temp);
            if(minLenth>tempStr.length()){
                minLenth=tempStr.length();
                tempNum=i;
            }
            strArray[i]= tempStr;
        }
        String str = "1";
        Boolean flag = true;
        for(int i=1;i<tempNum;i++){
            flag = true;
            String temp = strArray[tempNum].substring(i,i+1);
            for(int j=0;j<strArray.length;j++){
                if(!strArray[j].substring(i,i+1).equals(temp)) {
                    flag=false;
                    break;
                }
            }
            if(flag) str= str+temp;
        }
        int num = getBinaryStringNumber(str);
        for(String string:map.keySet()){
            if(map.get(string)==num) return string;
        }
        return null;
    }
    public static int getBinaryStringNumber(String string){
        int re = 1;
        char ch[] = string.toCharArray();
        for (int i=1;i<ch.length;i++){
            re = re*2+(ch[i]-'0');
        }
        return re;
    }
}


#友塔游戏2020春招正在进行中##友塔游戏##笔经##Java工程师##校招#
全部评论
二、三题和我的试卷一样第二题我是把节点的祖先放到HashSet里然后找公共的祖先,比如找D E F的公共祖先,就用3个HashSet分别存了他们各自的祖先,然后随便遍历一个HashSet,判断当前遍历到的节点是否能在其他HashSet找到,并且保留索引最大的第三题常见的dp,网上找一下应该有很多
1 回复 分享
发布于 2020-04-18 12:46
答主最后拿了吗
点赞 回复 分享
发布于 2020-07-28 13:21
java大数运算直接用BigInteger
点赞 回复 分享
发布于 2020-04-18 11:52

相关推荐

头像
10-16 00:55
武汉大学 Java
本来4月份能投,但是因为要本科成绩单所以放弃了(实在是没找着)。后面得知随便上传一个空白文档就好,所以9月份投了一下TP。TP学历厂也是名声在外了,楼主对TP还是有一定牵念的,楼主23年本科毕业时因为在考研,所以也确实有打算过没考上就去TP的,而23年的TP也有了著名的卡10%试用期不过的案例(虽然相较于很多公司,比如24年新华三毁意向还是要好一点的)。TP还有个负责海外业务的联州(也就是俗称的小TP)据说会比大TP工作强度好上一点,但说来说去楼主现在投他也只是求保底罢了,楼主投TP的时候联州还没有开秋招,就算了。TP的笔试系统是自己写的,有点古老,也不安全。也许监控了浏览器切换选项卡的行为,也许没有,反正没警告。总之在今年这个情况下,这种笔试算变相鼓励作弊罢,不过反正TP也不看这个。————————————————————一面—————————————————————1.&nbsp;自我介绍2.&nbsp;开源经历+计算机学习经历盘点3.&nbsp;成绩排名,本科排名,考研分数4.&nbsp;比赛经历盘点5.&nbsp;最近写什么代码6.&nbsp;C++怎么Debug内存泄露(开个Sanitizer,顺便说了几句AddressSanitizer原理在于替换指令和设置poison区)7.&nbsp;浏览器输入网址涉及到的协议(经典问题,不写回答了)8.&nbsp;有什么兴趣爱好(编程)9.&nbsp;最近写了多少行代码无反问,没关系,楼主本来也不知道要问啥。反正TP进去也是统一分配,这点楼主已经知道很久了。————————————————————二面—————————————————————1.&nbsp;自我介绍2.&nbsp;自我经历盘点3.&nbsp;做题,面试官共享屏幕,打开word文档(有一点点。无言)4.&nbsp;Rand5生成Rand75.&nbsp;25个样品挑不知轻重的次品,最少比多少次6.&nbsp;对某个数据按日期排序(没看懂,反正就说了各种排序的局限和优点)7.&nbsp;非hot100算法题,忘了,楼主本来想写个暴力解,面试官不满,提醒了楼主思路,然后楼主才写出来。无反问。出不是hot100的题不能让TP面试变得更加别具一格,望周知。主要是楼主作为算法低手被刺激到了。————————————————————三面—————————————————————1.&nbsp;自我介绍2.&nbsp;自我经历盘问3.&nbsp;研究生做啥课题,成果怎么样(超过sota了,ccf-b在投,虽然第二点是假的,数据集怎么来的(自己标,合格的牛马应该学会自己标数据自己提创新点然后自己炼模型)4.&nbsp;讲一讲自己的学习路径与能力框架(楼主会前后端开发,但是一时间没组织好怎么说明自己的后端能力,说到底crud的能力框架是什么呢,是说会几种不同的db、消息队列和中间件吗?总之楼主只是继续说了一顿db相关的能力框架)5.&nbsp;你都是自学为主的吗?(是的)6.&nbsp;我们的业务也不会很复杂,你来我们这边之后打算怎么上手这块呢(找ld跟mt拉通对齐,打造自我闭环能力)7.&nbsp;你未来的职业规划(与公司共同成长,短期内向做到将自己的技术与业务相结合,其他的进公司再说)8.&nbsp;你手里有其他offer了吗(没有的,被JD挂怕了,楼主以后全都说没其他offer)9.&nbsp;对深圳什么看法(很好,楼主看着你们长大的)10.&nbsp;有没有自己的兴趣爱好(编程)。楼主说“说来你可能不信”,但面试官表示相信。无反问。被问过太多兴趣爱好了,从考研复试开始楼主就一直在说自己的爱好是编程,楼主累了,正好今年楼主的唱歌技巧突飞猛进,以后楼主要说自己的爱好是唱歌,再问楼主楼主就给你唱孤勇者🎵。————————————————————座谈会—————————————————————咨询了群友得知座谈会不需要发言,只有一个HR在那里叭叭。所以楼主一边挂着座谈会,一边面了小米澎湃OS内核(这个经历也是有点节目效果的,但是保护楼主隐私还是不写面经了)。总结一下,TP学历厂名副其实,至少三个面试都是半小时,也没有任何刁钻的题(非hot100算法题也许算一个)。大家也都和和气气的面,挺好的。也许入职了会有很多鸡飞狗跳的事,但是能不能给楼主一个保底的offer球球了🥺。
查看23道真题和解析
点赞 评论 收藏
分享
评论
3
17
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务