为什么开始写这篇笔记?
写于大四,面临找工作的压力,加上本身是学习.Net方向的,这个方向的互联网工作比起Java和C/C++来说少的可怜,大都是一些传统行业在用C#。大三上学期期末就选择出来实习,本来希望能找个mentor带带我,但是这种事情可遇不可求,也不是说有个好的师傅带你就一定能学好,师傅领进门,修行还靠个人。两份实习工作都没能得到理想的提升,其实,无论学习什么方向,都靠自学,虽然.Net自学比像Java、Python这些当下流行的语言编程更加艰难,我身边的同学和朋友很多从事Java开发,由于Java开源,所以网上有很多相关资料和视频教程可供学习,但.Net就有点令人失望了,社区的生态也不是很好,前几年才宣布部分开源,学习资料虽然很多,但不是很完善,非常零散,在各大网络课程平台中很多视频教程都是要收费的,而且很多技术框架都是从Java中模仿过来的,相应的文档不全,英文文献倒是不少,微软官方的文档也挺多,我一般是在上面看一些帮助文档。自学虽然会很痛苦,但也很快乐,前提是要学会从中找到快乐。我相信.Net,加上现在.Net Core开源和跨平台后一定会很有前景,所以我不会放弃。前不久去360面试,面试官一直否定微软家的东西,而且他说他自己以前也是搞.Net的,后面转方向了,我最后实在听不下去就跟他争论了起来,最后可想而知,工作凉了,但我不后悔,既然一开始选择了这个方向,我就一定会坚持下去。下面是我根据收集的十来份面试和笔试的题总结的.Net巩固系列文档,掌握了这些,找一份月薪10K以上的.Net工作相信不是问题。.Net是个平台,所以不仅有.Net Framework的知识,还会有一些其他编程相关的知识点,如.Net Core相关的介绍和算法等。
学习本篇文章的前,你至少要掌握一门面向对象编程的高级语言的基础语法,不是C#也没关系。面向对象语言是一精百通。如果你学的是C或者前端,那可能稍有点吃力了!闲话不多说,开始教程。
发布到Github由大家共同补充和维护,欢迎大家Fork !
一个面试官问我:“假设我不太懂技术,你能不能用通俗的语言解释一下,什么是软件工程?”
- 封装
- 继承
- 多态
- 抽象类
- 接口
- 委托
- 事件
- 反射
- 特性/语法糖
- 索引器
- 泛型
- 集合
- CLR/GC
- 字符串的基本操作
- String和StringBuilder
- 字符的 ASCII 码和 Unicode 码
- 文件流
- 文本流
- 目录操作
- 网络流
- 管道通信
- HTTP
- TCP/UDP
- SQL语言
- ADO.NET
- ORM框架(EF/EF Core、Dapper)
- NoSql数据库
- Redis
- 线程/进程/服务
- 异步
- 第三方控件
- 常用数据结构
- 堆栈和队列
- 基础算法
- 23种设计模式GOF SOLID
- Windows Forms
- WPF
- UWP
- ASP.NET Core
- Xamarin
- 版本控制
- 编译器
- 反编译器
- VS/Code的使用
白板(算法题或设计模式题目)
上机Coding
翻译英文编程题
写伪代码
逻辑思考题、智力题
开放性问答
现场设计数据库
软件架构设计
软件建模
测试打字速度(外企英文要求、奇葩)
哈希表查找的原理是什么?
多线程如何同步?(尽可能多写几种方法)
索引分为哪几种,有什么特点?
....