最近1个多月经历了27轮面试(面试了7家公司),最后落实了“进家大公司”的基本目标,为此作一个面试经验的总结。一是用于总结自己这段时间的心路历程和学习方法,二是面试技巧,三是能给一些想要提升自己的伙伴们提供一些参考,
年龄危机作为中年人的一种常规焦虑,为什么会这样,无非是三种情况。一、是没好好学习,到了要被市场淘汰的边缘。二、不自信,总觉得自己不如别人,不敢挑战困难,不敢挑战自己。三、没有好好总结,也懒散,然后错失机会。这是个人的一些观点,不一定对,但是是我的切身体会。这两个月来,过年我都在看书,发现原来自己漏了那么多知识点,所以每天都是看12个小时书以上,看的知识体量远超出了自己能接受的最大上限了,或许这也是对我以前不总结的一种惩罚。其实心里还有很多话想说出来,但是这是个技术贴就不多说了,那就来看看我这段时间的学习内容和学习方法。
前言:如果掌握了下面的学习内容和面试题,你进不了1,2线大厂,那就是你的问题
学习内容:
1.数据结构与算法
栈、BSTree、AVLTree 相对平衡、RBTree 等价23树 黑平衡
Trie 名字快速索引、二三树 绝对平衡、线段树
hashcode key、哈夫曼树、B Tree、B+Tree
各种排序算法、贪心算法,动态规划,滑动窗口,寻路算法,BFS,Dijkstra,
2.设计模式
面向对象设计原则、单例模式+Gof23
3.机算机组成原理
寄存器、缓存、浮点。。。。。。
4.网络基础
TCP/IP/UPD/HTTP/FTP 3握4挥 FIN_WITE/TIME_WITE
5.数据库
Mysql/Mongo (redis)
6.操作系统
Linux/Window 包括多线程的一些设计区别
7.你的主语言C++/C#/Java
尽量精通,只能说尽量精通
8.图形学
OpenGL/DX
9.计算机数学(内容有点多,但对于性能优化及图形学优化有很大帮助)
泰勒展开式 全职一些开平方要的优化(如卡马克快速法)。。。
学习方法:
记忆力是作为学者持续输入知识的关键,所以找到一个好的记忆方法非常重要。我比较多用的是图像记忆法,缩词记忆,关键字记忆,并尊从艾宾浩斯遗忘曲线。每天晚上睡前我都会过一遍上面的学习内容,在脑海中快速过一遍,在脑海里编码和组织语言,看下有哪一个是我没记住的,然后放到第二早上起来复习。还有记词头法,比如记面向对象设计原则
单一职责 类负责一个功能
开闭原则 对扩展开放,对修改关闭
里氏替换 子类可覆盖父类,父类透明使用子类
依赖倒置 抽象不依赖细节,细节依赖抽象
接口隔离 使用多个接口设计,而不使用单一接口
组合复用 尽量使用类的组合 而不是继承
迪米特法则 软件尽量减少与实体的相互作用
单开里依接组迪,只背7个首字,然后每天去理解和解释完整的东西,加上工作经验和对设计模式的理解,慢慢你会发现,这像初恋,忘不了。
面试技巧:
对于回答技术问题,如果你在回答具体方案上能用上合理的设计模式和数据结构与算法,你要主动的关联上。前提你关联上了,要真的懂,不然就是自己往抗里挑。我举个其中一个例子:
面试官问:你的战斗服务器端整个实现过程是怎么样的?
我的回答是:除了要回答表的设计加载,属性设计,类的设计,战斗的具体方式,指令的设计,网络的交互设计,这里肯定是要详细说的,然后,你要说到用上的设计模式。比如我用了命令模式来接收和执行每个处理指令,目的是为了让发送接收解藕,更好的实现单机或实时交互。。。。。。我AI的仇恨值排序用到了堆排序,为了提升排序速度。。。。。。
然后面试官会问你什么是命令模式,你说说它的结构设计。如果你回答不好,本题算是给自己挖抗了,如果回答的好,你就加分了。又问你为什么堆排序会效率更高。。。。。。
面试经历的公司:
广州库洛,北京蓝港,上海游族,上海莉莉丝,深圳创梦天地,深圳迅龙创威,深圳腾讯
客户端我引擎熟悉的是Unity 熟悉的主语言是C++/C# 脚本是lua
面试内容汇总:
重点说下基础语言是一定要熟悉掌握的,因为这些问题太多了比如C#的频繁装箱拆箱为什么会有性能问题,这种在这就不列举了
大部分答案都能从我收藏的文章中找到答案
- 网络的优化
- Epoll实现原理
- Mysql建立索引要注意什么,列举一些影响的情况
- TCP 什么是TimeWait2状态
- UDP 和 TCP 的区别
- 状态同步和帧同步的区别
- Linux系统Top指令用过没有,里面的cache和buffer有什么区别
- Linux系统的内存分为哪几块
- 你是怎么做性能优化的(网络优化,内存优化 资源优化CPU优化,GPU优化)这里基本是自己讲出各种能想到的
- GC原理
- Unity的内存分布,主要是哪些
- 为什么你的moba项目选择帧同步,网络模式为什么选UDP,为什么CPU运算会有浮点精度问题,为什么要用定点数定点数实现原理,随机数实现方式帧同步战斗的设计断线重连有哪些优化方案,是否有做战斗问题分析系统
- 你熟悉动画系统不,有进行哪些优化
- IK原理
- AssetBundle压缩方式,及无损压缩原理
- PNG有损压缩原理,ETC及PVRTC压缩原理
- AVL树及红黑树的插入和删除的方式,他们在使用或特性上有什么区别
- 贪心算法和动态归划的区别和使用场景
- 地形LOD算法 四叉树和八叉树使用上的区别
- 组件LODGroup是否了解和使用过,使用上有遇到什么问题,有什么优化空间
- Camera的渲染模式有几种,分别用于什么情景
- 大批量相同物体绘制,有什么优化方案,GPUInstancing实现过程和原理
- 你选用的光照模型是什么,说说它的实现原理和你使用的方法
- 延迟渲染中为什么不能使用MSAA,TAA是自己实现的么,怎么实现的
- Shader效果的实现 ,白天黑夜效果,高光模型,多种水的实现,水倒映,模型/地形贴花,消融,植物的摆动
- 抖音推送,好友的好友,你会使用什么数据结构来处理
- 字典的实现原理
- O1级别排序的算法是什么
- 寻路算法你熟悉哪些,NavMesh的实现原理是什么
- 对于A星你有什么见解和优化方案
- 你的AI是怎么实现的,说说整个流程
- 行为树和有限状态机的区别
- Tolua中lua与C#对象的绑定原理是什么,性能热点有哪些,怎么优化
- Lua GC原理,lua使用中的一些优化点
- 矩阵的作用,逆矩阵,转置矩阵有什么作用
- 一副图片从加载到绘制,说说GPU的整个渲染流水线
- Alpha测试和模板测试哪个先哪个后,他们的工作原理是什么
- 你使用过哪些性能分析工具,是否使用过snapdragon
- 说说你用过哪些设计模式,并说出他们的运用场景
- 无缝大世界,你用的是什么方案
- 你说的接缝问题是怎么解决的,为什么会产生接缝
- 你大世界中物件的加载方式是什么,有使用多线程加载技术不
- 多线程中你用的锁是哪种,有使用过无锁同步方案么
- C#反射原理
- 多态的几种实现方式
- new 与 malloc区别
我会持续补充我漏掉的一些问题,大家加油!!!