在知乎听了一场Live,推荐了程序员的面试书单,整理一下,慢慢看起来。
C/C++
- 《c++ primer》
- 《c primer plus》
- 《effective c++》
- 《more effective c++》
Java
- 《Java 核心技术》 卷I、II
- 《深入理解Java虚拟机》
基础
操作系统、数据结构与算法、计算机网络、数据库、编译原理 看教材
网络
- TCP: 《TCP/IP详解 卷一》(网络、通信、分布式系统、服务器)
- HTTP: 《图解HTTP》(web开发)
- 《Unix 网络编程》
设计模式
- 《Head First 设计模式》
Linux
- 《Linux从入门到精通》
- 《深入理解LINUX内核》
- 《UNIX环境高级编程》
数学
- 《程序员的数学》1+2+3
- 《具体数学》
如果对底层理解越多,可能就会比别人有一点点不一样,这一点点的不一样,就体现了你的水平。
面试常见问题
操作系统常见问题:
- 线程、进程、协程
- 线程同步
- 进程间通信方式
- I/O复用
- 缓存算法(LRU等)
- 死锁问题
- 文件系统
计算机网络常见问题:
- 五层协议的体系结构
- ping的原理
- TCP三次握手、四次挥手
- TCP如何实现可靠传输
- TCP拥塞控制
- TCP流量控制
- socket的使用
- HTTP、HTTPS、HTTP2
数据结构与算法:
- 链表(各种指针题)
- 各种排序算法与复杂度分析
- hash算法的原理
- map的原理(hashmap、treemap)
- 二叉树、满二叉树、完全二叉树
- 平衡二叉树的实现
- 栈的进出顺序
- 最小生成树、单源最短路径
数据库:
- 1NF、2NF、3NF
- sql语法与命令
- 索引的原理和作用
- 事务:原子性、一致性、隔离性、持久性
- 超键、候选键、主键、外键
数学:
- 概率、期望(常考)、随机数算法
- 组合数学 (常考)
- 统计学、线性代数、微积分 (基础研究岗)
算法准备:
书:
- 《算法导论》 理论性,扎实,需要时间
- 《编程之美》 《crack the coding interview》 中低难度算法题
- 《Elements of Programming interviews》偏难
刷:
- leetcode 主要用来应付面试,面试外企(谷歌、微软、hulu、airbnb、indeed、Works Applications)之前至少刷两遍,面试国内企业,如BAT,熟练掌握中等难度即可
- hihocoder openjudge 主要用来练习上机笔试,长期保持练习,每天至少一道。谷歌、微软、hulu、indeed、网易游戏等 都采用上机算法笔试的形式
- 一些论坛有国外公司的面经或原题,如“一亩三分地”
后台开发 (java php python nodejs)
- 消息队列
- 负载均衡
- 分布式缓存(cache,一致性哈希)
- 分布式文件系统
- 分布式数据库(关系型数据库、nosql)
- 信息安全(HTTPS【热门】,加密技术【对称加密、非对称加密】)
书:《大型网站技术架构》
大数据岗
- 数据处理平台:Spark、Hadoop、Elasticsearch
- 存储:HDFS
- 资源调度:Yarn Mesos
- 机器学习工具:TensorFlow, torch, MXNet
- 数据仓库(SQL类):Pig Hive Spark SQL Phoenix
- 消息队列:RocketMQ RabbitMQ Kafka
- 流式计算:Storm, Spark Streaming
- 机器学习算法:聚类 时间序列 回归分析 文本挖掘 决策树 支持向量机 贝叶斯分类 神经网络
- 《机器学习》周志华
- 云计算:Openstack Docker
准备:
长期准备:算法题每天都做,每天看一些推荐书籍的关键部分
项目准备:开源项目 CodeTriage上面找项目, Google Summer Code, 阿里天池比赛, 实验室项目
找实习:1月份瞄准目标公司,开始集中准备,找内推,3月中旬之后就陆续开始笔试面试了
实习:6~9月 争取实现转正,一般都能拿到好offer
转正:9月
校招:9月到12月
算法刷题:至少在进入校招前,坚持半年,经常复习