腾讯一面应用开发

作者: 6b440373157d | 来源:发表于2018-04-16 10:33 被阅读491次

    最遗憾的,叫写冒泡排序都能写数组溢出,非科班面对算法题真的紧张。凉凉。

    面试官是做php的,我用java。

    问了http和https的区别。

    答: 后者是前者的安全实现,客户端发起请求时服务端会返回一个公匙,然后客户端根据公匙规则发送消息,服务端根据自己的配对密匙解密实现加密。

    那公钥放哪里呢?

    答:请求头。(面试官笑,是这样吗?我说这一块我理解的不够深就跳过去了)

    问: session和cookie讲一下?

    session的出现是为了解决cooki

    e存放本地而且量小的问题产生的,通过浏览器缓存的技术把需要的信息缓存,服务端就可以在同一应用中不同页面传递数据,我觉得服务端采用的是hash表存放的信息。

    那怎么知道是哪个客户端呢?

    这个刚忘讲了,服务端会发送一个id标识客户端。

    问:进程线程讲一下

    进程由操作系统调控,线程由进程调控(忘了讲一下内核和用户线程的映射,太紧张了),就好像一个java程序就是一个进程,里面很多线程,比如生产者消费者模式,进程就像框架框住他们,生产者消费者就是两个线程,在这个框架里面生存,做资源交换。

    问:那进程的通信呢?

    我知道共享内存,还有管道和信号量就不太了解了(紧张,脑子有点空白),信号量我知道java并发包下的信号量,如果您需要我可以跟您讲。

    问:线程怎么共享资源

    (我其实很想讲java内存模型,但是面试官就这么不喜不怒我也不知道要不要回答这个)我以jvm为例讲一下吧,jvm里的堆就是一个公共区间,线程负责来取资源,这样就可以实现资源共享,如果您需要问原理,我可以跟您讲一下内存模型。(面试官又是java开发,所以我真不知道要不要把底层讲的很细)

    问:讲一下反射机制(我提到spring的ioc就是反射机制,但是我说我不会spring写项目)

    (面试官也知道反射机制的么)在类加载的加载阶段会产生java.lanag.class对象,而且初始化阶段jvm也规定由reflect包下的方法必须加载进来,这样就可以通过class forname动态加载类获得对象和调用getclass获得class对象,然后再用newinstance方法获得对象,然后就可以了(又忘了讲类加载)

    问:讲一下hashmap和hash冲突

    1.7的时候用的是数组加单链表,1.8变成了红黑树(忘了讲初始容量和扩容问题,大佬的不怒自威太可怕,不知道该怎么),讲了一下取哈希值的改进,可以算的更快

    (这里提一下,大家应该发现面试官都在问hashmap,因为java8的一个核心优化就是hashmap,所以多看看博客)

    好像差不多就这么多,很伤心面试官没有问jvm和底层锁,不然我可以跟它就这个话题扯10多分钟)

    总得来讲,我觉得冒泡排序我真的想自宫,为什么这个我都能写错???

    反正我只是来见大佬的,一个遗憾就是问的大佬的问题大佬表示都不方便回答。

    好了,今年java想找工作,就把自己当成全栈工程师来努力吧,毕竟今年天下研发皆java,所以我当初是不是应该坚持一下走深度学习?

    秋招再见!

    作者:皇族

    本文来源于牛客网

    ——————————

    牛客网(www.nowcoder.com)

    - 互联网名企笔试真题

    - 校招求职笔经&面经

    - 程序员求职实习信息

    - 程序员学习交流社区

    相关文章

      网友评论

        本文标题:腾讯一面应用开发

        本文链接:https://www.haomeiwen.com/subject/nbdjkftx.html