文章目录
- 前言
- 一、自我介绍
- 二、挖项目
-
- 1、看到你用过unity3D,C#写的代码上线后怎么做到扩展(热部署)?
- 2、仿饿了么项目怎样部署上线的?
- 3、这个项目在做的时候考虑到流量控制和服务降级了吗?
- 4、你知道漏桶和令牌的区别吗?
- 5、看见你写到了项目过程中用了腾讯会议?
- 6、聊天室用了什么框架写的,SpringBoot?
- 7、项目中协议?
- 8、这样做有没有扩展性问题?
- 三、计算机网络
-
- 9、TCP UDP区别
- 10、你的项目里写的UDP传文件,你怎样保证安全的?
- 11、这样做和用TCP/IP相比哪个更好一些?
- 12、讲下拥塞控制
- 四、Java
-
- 13、讲下OOM,为什么会OOM,怎样去排查?
- 14、JVM内存结构里面都有啥?对象放在哪?
- 15、HashMap知道吧,new 一个HashMap的初始大小多少?
- 16、哈希表扩容时rehash怎么做的,里面算法啥?
- 17、hashMap在JDK1.7中和JDK1.8中的区别
- 18、超过多少转红黑树?
- 19、为什么是8?
- 20、HashMap线程不安全,那么你知道JDK做了哪些改进吗?
- 21、知道CopyOnWrite吗,咋保证线程安全的?
- 五、撕代码
-
- 22、写个先序遍历非递归
- 23、实现字符串转int
- 六、总结
前言
第一次面试,感觉网络很流畅、面试官很帅、声音很好听、气氛很融洽,所以决定再投几家,再面几次。
一、自我介绍
介绍了一下性格,爱好,然后又说了一下做过的项目。
二、挖项目
1、看到你用过unity3D,C#写的代码上线后怎么做到扩展(热部署)?
答:本地跑的,没考虑过上线,但是SpringBoot做过热部署。。尬
InjectFix
2、仿饿了么项目怎样部署上线的?
答:当时为了简单,就直接打了jar包,在云服务器上直接跑了。项目做完知道可以用Docker,但是没有用过。。
3、这个项目在做的时候考虑到流量控制和服务降级了吗?
答:饿了么这个项目在做的时候没有考虑,但是后面的dubbo项目考虑到了。服务降级:我们有五大模块,比如对于下订单时突发的大流量,我们直接返回一个“当前人数过多”的信息来拒绝服务,保证不会发生服务雪崩。
流量控制:用到了漏桶和令牌
4、你知道漏桶和令牌的区别吗?
答:漏桶的流速稳定,令牌桶允许有小的高峰
5、看见你写到了项目过程中用了腾讯会议?
答:疫情期间没法来学校,就在线上做,用腾讯会议每天开个小会,确保项目进度。
6、聊天室用了什么框架写的,SpringBoot?
答:纯Java。。
有什么架构么?
答:BIO模型。但是由于BIO模型有缺点(线程太多)考虑过NIO模型,但是没改好。。。
7、项目中协议?
答:定义了消息头:13个字节:type\src\desc\length
8、这样做有没有扩展性问题?
答:有。发现后面跟的数据包如果有多个变长的不同类型数据,就要每个数据多加一个length,很麻烦。
想过怎样改进么?
答:不知道咋改。。。
三、计算机网络
9、TCP UDP区别
答:TCP面向连接,UDP无连接。TCP安全,UDP不安全。
10、你的项目里写的UDP传文件,你怎样保证安全的?
答:发的数据包搞一个序号,收到货回应,正确发下一个,不正确就重传。
11、这样做和用TCP/IP相比哪个更好一些?
答:我认为各有优缺点,但是更倾向于UDP。因为当发送大文件时,TCP是有限制的,UDP虽然要重传,但是没有速度限制,不需要考虑其他用户(自私一些)。并且UDP的重传是和每个数据包的大小有关系的,一般10K以内都是可以的,我把数据包的大小相对的设置小一点,降低重传的概率。我认为这样做可以抵消掉UDP的缺点。
12、讲下拥塞控制
答:忘了。。。(我是傻屌,上周刚看过)
https://blog.csdn.net/qq_41431406/article/details/97926927
四、Java
13、讲下OOM,为什么会OOM,怎样去排查?
这个问题我回答的贼乱,因为前几天看过别人面经里面有这个题,然后专门去百度了一下,然后发现看不懂,,,就随便滑了过去。。。
https://blog.csdn.net/weixin_41835916/article/details/81558310
14、JVM内存结构里面都有啥?对象放在哪?
答:有堆、栈、方法区(半年前看的没复习忘完了)
JVM专栏
https://www.cnblogs.com/wangly/p/12853236.html
15、HashMap知道吧,new 一个HashMap的初始大小多少?
答:我之前学HashMap的时候是自己用数组+链表实现的,大小是动态的。项目里面用HashMap时没关注过初始大小。。。
16、哈希表扩容时rehash怎么做的,里面算法啥?
答:忘了。
(hashmap的源码上周粗略的看了一下。。。不深入=没看)
https://www.jianshu.com/p/13c650a25ed3
17、hashMap在JDK1.7中和JDK1.8中的区别
答:JDK1.8加了一个红黑树,当超过一定的值时就把下面的链转成红黑树,提高效率.
18、超过多少转红黑树?
答:8
19、为什么是8?
答:设计者经过大量测试,得出超过8的概率已经为千万分之1,为了性能就以8为界,超过8的就转成红黑树。
20、HashMap线程不安全,那么你知道JDK做了哪些改进吗?
答:我知道有correntHashMap。
再说几个?
答:想不起来了。。。
21、知道CopyOnWrite吗,咋保证线程安全的?
答:知道名字但是原理忘了。
CopyOnWrite只有写入互斥,其他的都是共享的,它会创建新的副本,当读的时候,读到的是老值。假如写的时候读,由于读取是读的原来的内容,虽然写入会改变值,但是不会影响到读
五、撕代码
22、写个先序遍历非递归
我竟没写出来。。。
https://www.cnblogs.com/zhi-leaf/p/10813048.html
23、实现字符串转int
我的思路是转成char之后用ASCII码减,然后乘10的次方。
原题:剑指offer67(我才做到18)
六、总结
作为人生中的第一次面试,收获还是挺大的。
首先是对于之前的学习态度:学习没有深入,没有耐心。面试官总是会从一个点往深处去挖,一些细小的知识点,虽然见过,但是没有在意,就会答不上来。
对于知识,面试官考察的内容都是见过的,通过这次面试,明确了要复习的范围。重点就是JVM、计网、操作系统、并发
对于项目,要多注重项目的思考。以后的项目要尽量考虑做到上线,以及上线后的性能优化处理。(所有的项目,面试官都问了,怎么上线,所有的回答都是没有上线,本地跑。。○| ̄|_)