看似简单的面试流程,实际暗流涌动,幸好我平时这样做准备

这一个面试流程,简简单单,但是却牵扯出来好多真实的问题,可能有一些就是我们在日常的工作中并没有特别注意的知识点,但是没想到在面试官这里还成为了一个重点的情况,或者通过一个刚跟简单的点延申引出了很多底层的知识点,不信,看一下吧,如果是你,你该怎么回答?
01基础部分linux 使用情景
有没有用过linux,你能用它做什么?
Linux是一个长时间运行比较稳定的操作系统,一般把它 。作为服务器 。
Linux本身具有c的编译环境,我们的一些软件是没有(redis,Nginx)软件包的,需要在linux上编译得到软件包 。
说一下linux常用命令
pwd:获取当前路径 。
cd:切换目录/跳转目录 。
su -u:切换到管理员 。
ls,ll:列举目录 。
文件操作命令:
tail:查看
rm -rf:删除文件 。
vi:修改
mkdir:创建文件夹 。
你是使用什么来连接远程服务器的?
需要依赖于linux服务器安装ssh服务端的,一般这个ssh服务端口为22 。Putty,xshell,securtcrt 。使用sftp客户端来来凝结sftp服务端,来上传,下载文件 。Winscp,xftp,fz等 。
你有没有做过一些关于数据库的优化?
定位慢查询优化方案:数据表设计时遵循范式,选择合适的存储引擎,选择合适的引擎,分表,分区,读写分离,缓存,语句优化

看似简单的面试流程,实际暗流涌动,幸好我平时这样做准备

文章插图
 
02高阶部分什么是jvm,jvm底层原理,调优
内存模型栈堆程序计数器方法区 。,Jvm堆中jvm对象分配规则 。
线上环境jvm排查实战与dump日志排查,Jvm自带visualvm
复制,标记整理,标记清除分代等回收算法,Gc中minor GC与full Gc差异 。帅杰大概回答了这些,而且都是从底层来说的 。这些由于篇幅太多,会在以后的文章中更新 。
谈谈Nio的架构
【看似简单的面试流程,实际暗流涌动,幸好我平时这样做准备】Osi七层 :应用,表示,会话,传输,网络,数据链路,物理 。
tcp:应用,传输,网络,链路 。
Tcp/ip协议组:应用层:tftp,http,snmp,ftp,smtp,DNS,telnet 。
传输层:tcp/udp
网络层:IP,ICMP,RIP,OSPF,BCP,IGMP
链路层:SLIP,CSLIP,PPP,ARP,RARP,MTU
物理层:iso02110,IEEE802,IEE802.2
阻塞io /bio,非阻塞io/nio io多路复用/mio 信号驱动/driven
/io 异步io/aio 。帅杰当时全部把这些说出来了,并且还给面试官画了各个的模型草图,从应用,内核,网卡层级讲了一下 。
Tcc分布式事务
这里面试者画了他公司的架构图,
Try:预留业务资源/数据效验
Confirm:确认执行业务操作
Cancel:取消执行业务操作
基于netty实现的im聊天室
在BIO模型中,服务器通过ServerSocket来开启监听,每当有请求的时候开启一个线程来接受处理和维持状态 。这种思想在低并发,小吞吐的应用还可以应付,一旦遇到大并发,大吞吐的请求,必然歇菜 。线程和客户端保持着1:1的对应关系,维持着线程 。维持那么的多的线程,JVM必然不堪重负,服务器必然崩溃,宕机 。
看似简单的面试流程,实际暗流涌动,幸好我平时这样做准备

文章插图
 
而在非阻塞的Netty中,却可以应付自如 。从容应对 。Tomcat就是基于BIO的网络通信模式(Tomcat可以通过一定配置,改成非阻塞模式),而JBoss却是基于非阻塞的NIO实现 。
NIO的网络通信模式很强劲,但是上手却一点都不容易 。其中解决和牵扯到好多网络问题 。如:网络延时,TCP的粘包/拆包,网络故障等一堆一堆的问题 。而Netty呢,针对nio复杂的编程难题而进行一系列的封装实现,提供给广大开发者一套开源简单,方便使用的API类库,甚至青出于蓝而胜于蓝,甚至几乎完美的解决CPU突然飙升到100%的bug。
看似简单的面试流程,实际暗流涌动,幸好我平时这样做准备

文章插图
 
03总结由于时间有限,面试者还被问道了分库分表,源码解析,分布式数据库中间件sharding-sphere,底层索引原理及实现,并发编程,dubbo的spi机制的源码剖析,zk的分布式锁,红黑树的剖析,jdk底层的一些排序算法,怎么优雅的写代码等 。
看到我们程序员要想拿高工资,技术这一块还是最关键的一块 。我们在平时的工作学习中,要深入的去理解这些技术栈 。而不是到了面试时间抱佛脚似的去背面试题 。


    推荐阅读