去哪儿超详细面经

去哪儿

一面

  1. 问了我的项目

    我就大致介绍了一下我的项目背景,然后项目有哪些模块,我在里面负责什么模块,以及我的这个模块是如何实现的;

  2. 项目亮点

    参考我的这篇文章,我自己把在面试中取到的场景题以及在书上看到的jvm调优的实例加到了我的项目里面,虽然我的项目并没有用到这些。附上文章。

    可以作为你面试的项目亮点的文章,不来看看吗?

  3. 也没考察我知识点,直接给出除了一道题目是英文的编程题目,题目大概是这样子:对于255.0.0.111/29这个ip地址,前29位是固定不变的,把后面的三位按照000 001 010 011 100 101 110 111 这样的格式同时加上前29位的二进制表示输出。

    代码:

    我自己手写了一遍,当时手写写了个大体思路,面试官也没深究,下面的代码是在刚写的,发现这题要完全写对还是挺不好写的。

     1public class Main {
     2    public static void main(String[] args) {
     3        String str = "255.0.0.111/29";
     4        String [] strList = str.split("/");
     5        String ip = strList[0];
     6        System.out.println(ip);
     7        int number = Integer.parseInt(strList[1]);
     8        String [] ipList = ip.split("\\.");
     9        String resultBegin = "";
    10        int number2 = 32 - number;
    11        for(int i=0;i<ipList.length;i++)
    12        {
    13            String temp = Integer.toBinaryString(Integer.parseInt(ipList[i]));
    14            if(temp.length() != 8)
    15            {
    16                String needzero = "";
    17                for(int j=0;j<8-temp.length();j++)
    18                    needzero += "0";
    19                temp = needzero + temp;
    20            }
    21            if(i != ipList.length-1)
    22            {
    23                resultBegin += temp + " ";//29 包含的 255转换后是8位 0是8位 前三个3*8 24位
    24            }else {
    25                resultBegin += temp.substring(0,8-number2);//5位 截取最后的111转换后的二进制表示的前几位;
    26            }
    27        }
    28        int beginLength = resultBegin.length();
    29        int lastLength = 32 - number;
    30        for(int i = 0;i<(int)Math.pow(2,number2);i++)
    31        {
    32            String last = Integer.toBinaryString(i);
    33            if(last.length() != lastLength)
    34            {
    35                String needzero = "";
    36                for(int j=0;j<lastLength-last.length();j++)
    37                    needzero += "0";
    38                last  = needzero + last;
    39            }
    40            System.out.println(resultBegin+last);
    41        }
    42    }
    43}
    

    输出

  4. 问了二分查找的思想

    就是简单的二分查找思想就过去了。

  5. 栈和堆的区别

    我说了栈先进后出,堆说了最大堆和最小堆的特点,以及堆如何插入,删除,这些。

  6. 问我有什么想问的?

    我说如何评价我的面试表现,其实想知道能不能进入下一面,以及自己有哪方面欠缺,让面试官指点一下。

二面

  1. 聊项目

    就是又和一面一样介绍了项目背景,项目难点这些。

  2. 问我爬虫中遇到javascript动态加载怎么办?

    我说了可以去用谷歌浏览器右键检查看这段js请求了哪些数据,然后去构造同样的请求即可;还说了一种就是使用webdriver模拟浏览器的操作,等js完全加载出来,然后就可以了。

  3. 项目中,我的项目亮点是虚拟机内存溢出调参,然后他问我如何确定一个程序需要的最小内存,开放题。

    我说可以去看这个程序中数组大小,变量的个数,以及编译的时候例如对于hashmap这种结构存在字节对齐需要额外计算,就答出了这些,这个问题不是很会,大家有什么好的回答可以评论区留言,互相学习。

  4. 问我一面面试官考察的那道手写代码题你觉得主要是考你什么?

    我说考察阅读英文文献,对java语言的熟练度,会不会编程

  5. 问我网络知道吗,问了我计算机网络的七层是啥?

    物理层,数据链路层,网络层,传输层,会话层,表示层,应用层

  6. 接着问了,后来合并成4层,为啥合并?

    这个当时瞎说了一通,然后网上百度了一下说是,会话层在大多数应用中很少用到,表示层几乎是空的。在数据链路层与网络层之间有很多的子层插入,每个子层有不同的功能。OSI模型将“服务”与“协议”的定义结合起来,使得参考模型变得格外复杂,将它的实现起是困难的。

  7. 问了https如何确保加密传输安全?

    答了ssl的RSA握手协议的原理 第一步,Client给出协议版本号、一个客户端生成的随机数(Client random),以及客户端支持的加密方法。第二步,Server确认双方使用的加密方法,并给出数字证书、以及一个服务器生成的随机数(Server random)。第三步,Client确认数字证书有效,然后生成一个新的随机数(Premaster secret),并使用数字证书中的公钥,加密这个随机数,发给Server。第四步,Server使用自己的私钥,获取Client发来的随机数(即Premaster secret)。第五步,Client和Server根据约定的加密方法,使用前面的三个随机数,生成”对话密钥”(session key),用来加密接下来的整个对话过程。

  8. 聊到这里,突然又问我我项目中用到的rsa,des加密的区别

    我说了rsa非对称加密,des对称加密,rsa加密效率低,des加密效率低,rsa用来加密传输密钥,des用来加密传输的大量的文本信息。

  9. 问我项目中为啥这块可以用https解决不用

    我说可以

  10. 接着问我为啥不用

    我说https需要证书,所以是花钱的,学生穷。。。面试官笑了。面试官说有免费的。。。哈哈。然后我说我这里老师要求用rsa des...

  11. 设计模式问了我单例模式的好处

    单例模式会阻止其他对象实例化其自己的单例对象的副本,从而确保所有对象都访问唯一实例。让我举一个观察者模式的例子,我把《大话数据结构》的例子说了一遍。

  12. 接着问我数据库,问我数据库主键是不是必须设置

    我说,就算不人为的加主键,mysql数据库会默认给数据库加一个主键索引。

  13. 问我主键索引的原理

    我说底层是地址连续存放,使用二分查找

  14. 他其实想问我B+树,然后他说那么其他索引的原理是啥

    我说B+树,然后我说了B+数大致是啥

  15. 问我一个查询很慢怎么办?

    我说了分库分表,加索引,order by,加的索引失效了

  16. 问我索引在哪些情况下失效

    我说了 索引中模糊查询like“%100%”写错了写成了“100%”这种情况下失效。

  17. 他问我这种情况下为啥失效?

    不知道,这个.。。额。。。有知道的欢迎评论区留言。

  18. 考了一个有序有重复数字的数组,找出现的最左的数的下标,[1,2,3,3,3,3,3,5,6,7]就是第一个3出现的位置,我提起笔刚写了两行,他说这个准备过吗,我说准备过,他就不让写了。。。

  19. 最后问了我最近看啥书?

    我说了一些最近看的书,就完事了,让我去等酒店的一个房间等通知,然后刚坐下,就让我去hr面试了。

hr面试

hr就是和你聊聊人生理想,当时她问我有啥offer没,我说没有,去哪儿是第一家到hr面的。

然后我问了她 我这是面试通过收到offer了吗,她说是,然后我当时感觉有了个去哪儿offer保底一下没忍住笑出声了,非常开心,她看我这表现,也很满意,也没怎么叼难我,给我发了一个去哪儿的骆驼娃娃,给了我一个纸质的offer,然后就完事了。

去哪儿hr感觉不刷人,表现像个正常人就行。

结束语

感觉去哪儿效率很高,2个小时就给我发了一份纸质offer,面试环境也不错,一对一和面试官在酒店聊天。

END


推荐阅读

我的2019校招

极有可能是你朋友圈最全的3T编程资料分享!!!

RNG输了,但我们不能输

扫一扫

640?wx_fmt=jpeg

有干货

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值