阅文集团Java暑期实习笔试题 2020.5.19

10个单选,10个多选,1个回答题,3个编程题,1个附加题
单选多选不记得了。

回答题:
将一个Map转为JavaBean,完善方法代码,要求使用反射
public static <T> T map2bean(Map<String,Object> map,Class<T> clz) {
    
}
说实话,完全不会,反射这块自己代码没怎么写过,本来还想试试,结果这题不能使用本地IDE,只能在网页上硬打,直接跳过放弃了
结束后找到了以下代码,参考:https://blog.csdn.net/wodemale/article/details/89419852 https://www.cnblogs.com/tfper/p/9931656.html

//通过reflect————  public static Object mapToObject(Map<String, Object> map, Class<?> beanClass) throws Exception {
    if (map == null)
        return null;
    Object obj = beanClass.newInstance();
    Field[] fields = obj.getClass().getDeclaredFields();
    for (Field field : fields) {
        int mod = field.getModifiers();
        if (Modifier.isStatic(mod) || Modifier.isFinal(mod)) {
            continue;
        }
        field.setAccessible(true);
        field.set(obj, map.get(field.getName()));
    }
    return obj;
}


//Introspector类———— public static <T> T map2bean(Map<String,Object> map,Class<T> clz) throws Exception{
    T obj = clz.newInstance();  //创建一个需要转换为的类型的对象
    //从Map中获取和属性名称一样的值,把值设置给对象(setter方法)

    //得到属性的描述器
    BeanInfo b = Introspector.getBeanInfo(clz,Object.class);
    PropertyDescriptor[] pds = b.getPropertyDescriptors();
    for (PropertyDescriptor pd : pds) {
        //得到属性的setter方法
        Method setter = pd.getWriteMethod();
        //得到key名字和属性名字相同的value设置给属性
        setter.invoke(obj, map.get(pd.getName()));
    }
    return obj;
}


编程题
1、递增数组,用二叉搜索求数字是否存在在数组中
2、若干个大数求和,偷懒了,直接用了BigDecimal,不知道这样会不会不算AC,有人知道嘛
3、查找首个在字符串中没有重复出现的字符

附加题:
将ArrayList<String>形式的参数通过以下3个步骤加密成一段token
入参数的格式为["query=中文","version=1.0.0"]这样的格式
要求:1、将入参的顺序按照key的升序排序
2、将入参拼接成k1=v1&k2=v2&k3=v3这样的格式
3、将2生成的字符串通过md5加密
注:可能有中文,md5加密结果小写

我这题还做了挺久的,因为md5加密不会,之前项目里有用到过md5,当时也是直接CtrlC+CtrlV黏贴来的,不知道加密的具体细节,最后加密的结果错了,以下是我的失败题解,希望有大佬能给个正解
//失败题解,非正解。最后加密结果错误
public String createToken(ArrayList<String> querys) {
    // write code here
    TreeMap<String, String> treeMap = querysToTreeMap(querys);

    String myArgs = getStringArgs(treeMap);

    String md5String  = getMd5ByArgs(myArgs);

    return md5String;
}


private TreeMap<String, String> querysToTreeMap(ArrayList<String> querys) {
    TreeMap<String, String> treeMap = new TreeMap<>();
    for (String s : querys) {
        String[] strings = s.split("=");
        treeMap.put(strings[0], strings[1]);
    }
    return treeMap;
}

private String getStringArgs(TreeMap<String, String> treeMap) {
    StringBuilder stringBuilder = new StringBuilder();
    while (treeMap.size() != 0) {
        Map.Entry entry = treeMap.pollFirstEntry();
        stringBuilder.append(entry.getKey() + "=" + entry.getValue() + "&");
    }
    if (stringBuilder.length() > 0) {
        stringBuilder.deleteCharAt(stringBuilder.length() - 1);
    }
    return stringBuilder.toString();
}

private String getMd5ByArgs(String myArgs) {
    String md5 = "";
    try {
        MessageDigest md = MessageDigest.getInstance("md5");
        md.update(myArgs.getBytes("utf-8"));
        byte b[] = md.digest();
        int i;
        StringBuffer sb = new StringBuffer("");
        for (int offset = 0; offset < b.length; offset++) {
            i = b[offset];
            if (i < 0)
                i += 256;
            if (i < 16)
                sb.append("0");
            sb.append(Integer.toHexString(i));
        }
        md5 = sb.toString();
    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }
    return md5;
}

PS:["query=中文","version=1.0.0"]正确结果是“be614...2971”的32位字符串
#阅文集团##笔试题目#
全部评论
老哥过了吗?牛客状态是怎么样的
点赞 回复
分享
发布于 2020-05-20 16:04
你这个怎么这么难……我前三题是第一个不重复,反转链表,求二进制中1的个数……压轴是朋友圈……
点赞 回复
分享
发布于 2020-05-20 16:07
滴滴
校招火热招聘中
官网直投
兄弟,你投的北京还是上海
点赞 回复
分享
发布于 2020-05-21 10:45
老哥,挂了话,会显示啥
点赞 回复
分享
发布于 2020-05-21 11:21
我都题和你的不一样哎,阅文真的很无语,全a,也不合适,打扰了。
点赞 回复
分享
发布于 2020-05-21 11:50
打扰了  四题编程题全部ac 直接不合适?这笔试的意义在哪
点赞 回复
分享
发布于 2020-05-21 15:00
我还以为就我一个人这样。那个附加的TOKEN的MD5写法网上查了一下,还以为被算作弊了
点赞 回复
分享
发布于 2020-05-21 21:35
想问一下今年有拿到阅文offer的吗  刚面完感觉聊的害行  反手给我挂了
点赞 回复
分享
发布于 2020-05-27 11:26

相关推荐

4 8 评论
分享
牛客网
牛客企业服务