腾讯一面应用开发,gg
先说下最遗憾的,叫写冒泡排序都能写数组溢出,非科班面对算法题真的紧张。凉凉。
面试官是做php的,我用java。
问了http和https的区别。
答: 后者是前者的安全实现,客户端发起请求时服务端会返回一个公匙,然后客户端根据公匙规则发送消息,服务端根据自己的配对密匙解密实现加密。
那公钥放哪里呢?
答:请求头。(面试官笑,是这样吗?我说这一块我理解的不够深就跳过去了)
问: session和cookie讲一下?
session的出现是为了解决cookie存放本地而且量小的问题产生的,通过浏览器缓存的技术把需要的信息缓存,服务端就可以在同一应用中不同页面传递数据,我觉得服务端采用的是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,所以我当初是不是应该坚持一下走深度学习?
秋招再见!
#腾讯##Java工程师#
面试官是做php的,我用java。
问了http和https的区别。
答: 后者是前者的安全实现,客户端发起请求时服务端会返回一个公匙,然后客户端根据公匙规则发送消息,服务端根据自己的配对密匙解密实现加密。
那公钥放哪里呢?
答:请求头。(面试官笑,是这样吗?我说这一块我理解的不够深就跳过去了)
问: session和cookie讲一下?
session的出现是为了解决cookie存放本地而且量小的问题产生的,通过浏览器缓存的技术把需要的信息缓存,服务端就可以在同一应用中不同页面传递数据,我觉得服务端采用的是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,所以我当初是不是应该坚持一下走深度学习?
秋招再见!
#腾讯##Java工程师#