商汤一面
你的职位期望?(北京)职业规划和发展?(java或者go)
兴趣爱好?看过社区或者开源项目?(没看过)
项目,key怎么存的?(自增主键)
有尝试过把图片存在mysql?(没有,这里听错了听成了redis)
有了kafka为什么还需要zookeeper呢?(协调服务,kafka的broker)
RPC怎么确定调用的目标是谁(没回答上)
设计模式了解吗?(单例,代理模式,装饰器模式)
设计模式的作用?(没回答上)
1)重用设计和代码 重用设计比重用代码更有意义,自动带来代码重用
2)提高扩展性 大量使用面向接口编程,预留扩展插槽,新的功能或特性很容易加入到系统中来
3)提高灵活性 通过组合提高灵活性,可允许代码修改平稳发生,对一处修改不会波及到其他模块
4)提高开发效率 正确使用设计模式,可以节省大量的时间
了解过其他语言吗?(学过C,用过python)
TCP和UDP的区别:
TCP已经建立连接后把网线拔了(回答keepAlive)
那如果没有keepalive呢(会一直保持连接状态?我猜的)
知道TIME_WAIT吗(四次挥手的时候,主动关闭发送ACK报文,处于TIME_WAIT,等待2MSL)
大量TIME_WAIT(大量的短连接)
linux常用的调试网络状态的工具用过吗(没用过)
linux中进程和线程区别
进程上下午切换到底切换了什么?()
那线程上下文切换呢?
linux中的虚拟内存以及请求分页请求分段等
做题:
1.二叉树锯齿状打印
2.接雨水
linux常用命令:(nestat看端口, kill杀进程, java -jar, chomod, nohup &, >重定向,看日志tail -f, tail -n100)
vim编辑器用过吗?你觉得怎么样?(我觉得不太好用,面试官建议我学习一下vim)
linux上出现过内核或者磁盘的问题吗?(没有)
看过磁盘利用率吗?(没看过)
cpu利用率看过吗?(top命令)
cpu密集和io密集在设计代码时会有不同的考虑吗?(cpu密集的话线程别太多,io密集就多设置一些线程)
java里是否有轻量级协程?(没了解过,面试官建议我了解linux的轻量级协程)
系统调用,不同的进程为什么能调用同一个地址的系统调用呢?
jvm说一说(说了内存区域和类加载机制等等)
jvm内存泄漏怎么导致的呢?(这个没答好)