金蝶/顺丰科技/海康/苏宁/B站 offer面筋
Java研发
---仅是我平时学的和遇见过的。。。
Java基础:
1. 多线程
2. JUC源码(synchronized,lock,CAS)
3. 集合的底层数据结构
4. JVM虚拟机。《深入理解Java虚拟机 JVM高级特性与最佳实践》
5. IO/NIO(写两个版本的聊天室就能理解了)
6. 反射,注解,***,异常,序列化
7. 网络编程,文件操作
8. 装箱拆箱陷阱,hashCode/equals
呃,这块太多了。。。
计算机网络:
教科书《计算机网络 谢希仁》至少看个3遍吧。。。
1. 7层/5层模型
2. 每层的代表协议
3. IP协议是基础
4. TCP(重点):三次握手四次挥手、拥塞控制算法、滑动窗口(关
上书能画流程图,知道其中各个标记位,状态位)、与UDP区别
PS:要是做过流量统计Demo就是最好了,WinPcap抓包分析
5. URL全过程分析(写过项目,爬过数据的应该没问题)。
6. HTTP/HTTPS/SSL
一些攻击手段可以了解一下,要是面试官问到了还可以互相扯一下嘛
操作系统:
感谢我们操作系统老师,抛开书本,从底层数据结构实现给我们讲。
1. 文件系统(INode,Block)自己装几次Ubuntu就懂了。
2. 进程线程(PCB,TCB,页表,逻辑地址,物理地址,线程的实现方式,通信
机制,同步,死锁)
3. 页面置换算法,进程调度算法(学操作系统是用C写一个简单的Demo)
4. Linux基本命令,shell编程
5. epoll数据结构和实现(什么红黑树,链表,中断回调的)
算法与数据结构:
1. 常用:数组、链表、二叉树、队列、堆栈
2. 常见:快排,归并,堆排序、递归、动态规划(不会手写建议就不要去找
虐了)
上面的是基础,一般公司基本能应付,秘诀就是刷题嘛。
3. B树、B+树、各种树 ^_^
4. 图(遇见的比较少,我就看了下最短路径)
常见的就是面试官给一个题,写出算法后进行时间复杂度,空间复杂度的优
化
数据库:
1. SQL编写(join/union/having/group by)。《高性能MySQL》可以看一下
2. 我学的Innodb引擎。《MySQL技术内幕InnoDB存储引擎》
3. 事务、锁、索引(这一块学习空间很大)
4. Redis。基本数据结构的内部实现、单线程epoll机制、RedLock算法
5. 分布式设计(分库分表,主从,读写分离)(ZooKeeper)
设计模式:
《大话设计模式》《Android源码设计模式解析与实战》
多写项目。。。
开发框架:
因为我也是刚转到Java研发,这一块就不说了。我目前就看了Spring, Mybatis,Tomcat的一点源码
亮点:
Java研发的我从大一开始做安卓开发,项目经验实习经验都有,这就可以和面试官聊了嘛,至少不是最底层的技术渣渣 ^_^