.NET全栈开发工程师学习路径
2016-04-27 11:49
197 查看
//注0:今年是博客园开发团队发展的关键一年,我们有两个重要目标——实践领域驱动设计与实现.NET应用的跨平台,我们期待有志开发者的加盟!
//注1:不要求立即全栈,但要在一定时间内成长为全栈。
//注2:投递简历时需要谈一下:你为什么想加入博客园团队。
//注3:除了面试,你还需要完成一份代码作业,我们要看你写的代码。漂亮代码是吸引我们的重要地方。
是发自内心的真爱——真正的爱好。在日复一日年复一年,看似枯燥的编码工作中,能够享受取之不尽的用代码进行创作的乐趣。
}
* 乐于解决问题。{
作为程序员,你有一个永远无法回避的问题——每天要面对各种各样的问题,而唯一的解决之道就是喜欢上解决问题。不仅要喜欢上解决问题后的兴奋感觉,更要喜欢上解决问题过程中的煎熬。
}
* 讨厌重复代码。{
将重复代码当作一种垃圾,自己不乱扔垃圾,也不能容忍别人乱扔垃圾。
}
* 讲究代码命名。{
代码如诗,命名如诗句。在代码的创作过程中,追求命名的优雅,不仅让自己也让别人读起代码来赏心悦目。
}
* 写过三年代码。{
编程语言不限。但从事这个职位,需要用C#,因为团队协作开发要使用统一的工具。
}
* 基础知识牢靠。{
比如知道三大原理(计算机原理、操作系统原理、编译原理)两个协议(TCP与HTTP协议)一种结构(数据结构)。不牢靠的地方,能及时补课,夯实基础。
}
* 基本功够扎实。{
比如正则表达式不在话下,Windows/Linux服务器玩得转,Git轻车熟路。如有基本功不扎实,能积极补练基本功。
}
* 能够面向对象。{
至少熟悉一门面向对象编程语言,有一定的面向对象设计基础,能够将业务逻辑转变为对象之间的交互。
}
* 英语水平不赖。{
能够流畅地阅读英文技术资料,能够顺畅地与国外开发者用英文进行文字交流,能够准确地用英文进行代码中的命名,能够用英文写代码注释与git提交说明。
}
* 自学能力很强。{
能够根据面临的实际问题,根据自己的不足,根据自己的兴趣,根据未来发展的需要,持续地进行学习。更要能在自己所犯的错误中学习。一边写代码,一边学习;一边学习,一边写代码,这就是你的程序人生。
}
* 自我驱动开发。{
在我们这里没有产品经理,没有项目经理,一切由程序员说了算。你要能直接面对用户,主动挖掘用户需求,将之变为自己的想法,然后用漂亮的代码实现。
}
①线性表部分:
线性表(上){ 数组、ArrayList }
线性表(中){ 单链表、双链表、LinkedList }
线性表(下){ 循环链表、约瑟夫问题 }
②栈与队列部分:
栈 { LIFO、Stack<T> }
队列 { FIFO、Queue<T> }
③树与二叉树部分:
树与二叉树(上){ 二叉树的创建与递归遍历 }
树与二叉树(中){ 二叉树的非递归遍历与二叉查找树 }
树与二叉树(下){ 二叉树的应用:求解四则运算 }
④图部分:
图(上){ 图的基本概念、存储结构与模拟实现 }
图(中){ 图的深度与广度优先遍历算法与实现 }
图(中){ 最小生成树算法介绍与实现 }
图(下){ 最短路径算法介绍与实现 }
⑤查找部分:
查找(上){ 二分查找、二叉查找树、平衡二叉树、SortedDictionary<TKey,TValue> }
查找(下){ 哈希表、Hashtable、Dictionary、三种查找表的对比测试 }
⑥排序部分:
排序:{ 插入排序、交换排序、选择排序、归并排序 }
⑦剑指Offer算法题部分:
面试题1:{ 实现Singleton模式 } 面试题2:{ 二维数组中的查找 }
面试题3:{ 替换空格 } 面试题4:{ 从尾到头打印链表 }
面试题5:{ 重建二叉树 } 面试题6:{ 用两个栈实现队列 }
面试题7:{ 旋转数组的最小数字 } 面试题8:{ 斐波那契数列 }
面试题9:{ 二进制中1的个数 } 面试题10:{ 数值的整数次方 }
面试题11:{ 打印1到最大的n位数 } 面试题12:{ 在O(1)时间删除链表 }
面试题13:{ 调整整数数组使得奇数在偶数之前 } 面试题14:{ 链表的倒数第k个节点 }
面试题15:{ 反转链表 } 面试题16:{ 合并两个排序的链表 }
面试题17:{ 二叉树的子结构 } 面试题18:{ 二叉树的镜像 }
面试题19:{ 包含Min函数的栈 } 面试题20:{ 栈的压入、弹出序列 }
面试题21:{ 从上到下打印二叉树 } 面试题22:{ 二叉搜索树的后序遍历序列 }
面试题23:{ 二叉树中和为某一值的路径 } 面试题24:{ 复杂链表的复制 }
面试题25:{ 二叉搜索树与双向链表 } 面试题26:{ 字符串的排列 }
面试题27:{ 最小的k个数 } 面试题28:{ 连续子数组的最大和 }
面试题29:{ 丑数 } 面试题30:{ 第一次只出现一个的字符 }
面试题31:{ 两个链表的第一个公共节点 } 面试题32:{数字在排序数组中出现的次数
}
面试题33:{
二叉树的深度 } 面试题34:{ 翻转单词顺序vs左旋转字符串 }
面试题35:{
将字符串转换为数字 }
参考书目:《图解TCP/IP协议》
[b]② HTTP协议[/b]
[b] [/b]参考书目:《图解HTTP协议》
参考书目:《程序是怎样跑起来的》、《深入理解计算机系统》
② 操作系统原理
参考书目:《计算机的心智-操作系统之哲学原理》
Part 0.导论
操作系统导论 {
程序的演变过程、操作系统是什么、操作系统的角色和功能 }
操作系统基本概念 {
硬件基础知识、抽象、内核态与用户态、操作系统结构、系统调用 }
Part 1.CPU管理部分:
进程原理(上){
进程模型、进程的层次结构、进程的状态、进程的缺陷 }
进程原理(中){
进程调度的定义、各种调度算法、调度异常之优先级倒挂 }
进程原理(下){
进程通信概要、各种通信方式 }
线程原理(上){
线程基础、线程同步 }
线程原理(下){
死锁描述、死锁必要条件、死锁应对方式、哲学家就餐问题、银行家算法 }
Part 2.内存管理部分:
内存管理(上){
内存管理概念、基本内存管理 }
内存管理(中){
页式内存管理、页面置换算法 }
内存管理(下){
段式内存管理、段页式内存管理 }
Part 3.外存管理部分:
外存管理(上){
磁盘定义、磁盘结构、访问时间、磁盘调度算法 }
外存管理(下){
文件系统、文件夹、文件系统的调用 }
Part 4.设备管理部分:
设备管理 {
I/O基本原理、I/O硬件与软件、I/O软件的分层 }
③ 编译原理
参考书目:《编译原理(龙书)》
② 面向对象的实现和异常的处理基础
③ 字符串、集合与流的基础
④
委托、事件、反射与特性的基础
⑤
多线程开发基础
⑥
ADO.NET与数据库开发基础
⑦ Web Service的开发与应用基础
①
自己动手写一个简单的ASP.NET MVC框架(第一版)
② 自己动手写一个简单的ASP.NET MVC框架(第二版)
AngularJS基础入门初探
Hybrid App 移动应用开发初探
② Scrum Guide 中文版
Agile Software Development 敏捷软件开发基础知识
.NET单元测试的艺术:入门
② .NET单元测试的艺术:核心技术
③ .NET单元测试的艺术:测试代码
④ .NET单元测试的艺术:设计和流程
.NET全栈开发工程师
1.职位描述
独立负责至少一个产品的前后端开发工作//注0:今年是博客园开发团队发展的关键一年,我们有两个重要目标——实践领域驱动设计与实现.NET应用的跨平台,我们期待有志开发者的加盟!
//注1:不要求立即全栈,但要在一定时间内成长为全栈。
//注2:投递简历时需要谈一下:你为什么想加入博客园团队。
//注3:除了面试,你还需要完成一份代码作业,我们要看你写的代码。漂亮代码是吸引我们的重要地方。
2.职位要求
* 喜欢编写代码。{是发自内心的真爱——真正的爱好。在日复一日年复一年,看似枯燥的编码工作中,能够享受取之不尽的用代码进行创作的乐趣。
}
* 乐于解决问题。{
作为程序员,你有一个永远无法回避的问题——每天要面对各种各样的问题,而唯一的解决之道就是喜欢上解决问题。不仅要喜欢上解决问题后的兴奋感觉,更要喜欢上解决问题过程中的煎熬。
}
* 讨厌重复代码。{
将重复代码当作一种垃圾,自己不乱扔垃圾,也不能容忍别人乱扔垃圾。
}
* 讲究代码命名。{
代码如诗,命名如诗句。在代码的创作过程中,追求命名的优雅,不仅让自己也让别人读起代码来赏心悦目。
}
* 写过三年代码。{
编程语言不限。但从事这个职位,需要用C#,因为团队协作开发要使用统一的工具。
}
* 基础知识牢靠。{
比如知道三大原理(计算机原理、操作系统原理、编译原理)两个协议(TCP与HTTP协议)一种结构(数据结构)。不牢靠的地方,能及时补课,夯实基础。
}
* 基本功够扎实。{
比如正则表达式不在话下,Windows/Linux服务器玩得转,Git轻车熟路。如有基本功不扎实,能积极补练基本功。
}
* 能够面向对象。{
至少熟悉一门面向对象编程语言,有一定的面向对象设计基础,能够将业务逻辑转变为对象之间的交互。
}
* 英语水平不赖。{
能够流畅地阅读英文技术资料,能够顺畅地与国外开发者用英文进行文字交流,能够准确地用英文进行代码中的命名,能够用英文写代码注释与git提交说明。
}
* 自学能力很强。{
能够根据面临的实际问题,根据自己的不足,根据自己的兴趣,根据未来发展的需要,持续地进行学习。更要能在自己所犯的错误中学习。一边写代码,一边学习;一边学习,一边写代码,这就是你的程序人生。
}
* 自我驱动开发。{
在我们这里没有产品经理,没有项目经理,一切由程序员说了算。你要能直接面对用户,主动挖掘用户需求,将之变为自己的想法,然后用漂亮的代码实现。
}
扎实的基础知识之路
纵观博客园的招聘启事条目中,基础知识的牢靠一条中提出了“三大原理、两个协议和一种结构”,因此我开始补习我的计算机专业基础知识,下面列出我的补课成果:1.一种结构:数据结构
参考书目:《大话数据结构》、《数据结构(C#语言描述)》、《剑指Offer》①线性表部分:
线性表(上){ 数组、ArrayList }
线性表(中){ 单链表、双链表、LinkedList }
线性表(下){ 循环链表、约瑟夫问题 }
②栈与队列部分:
栈 { LIFO、Stack<T> }
队列 { FIFO、Queue<T> }
③树与二叉树部分:
树与二叉树(上){ 二叉树的创建与递归遍历 }
树与二叉树(中){ 二叉树的非递归遍历与二叉查找树 }
树与二叉树(下){ 二叉树的应用:求解四则运算 }
④图部分:
图(上){ 图的基本概念、存储结构与模拟实现 }
图(中){ 图的深度与广度优先遍历算法与实现 }
图(中){ 最小生成树算法介绍与实现 }
图(下){ 最短路径算法介绍与实现 }
⑤查找部分:
查找(上){ 二分查找、二叉查找树、平衡二叉树、SortedDictionary<TKey,TValue> }
查找(下){ 哈希表、Hashtable、Dictionary、三种查找表的对比测试 }
⑥排序部分:
排序:{ 插入排序、交换排序、选择排序、归并排序 }
⑦剑指Offer算法题部分:
面试题1:{ 实现Singleton模式 } 面试题2:{ 二维数组中的查找 }
面试题3:{ 替换空格 } 面试题4:{ 从尾到头打印链表 }
面试题5:{ 重建二叉树 } 面试题6:{ 用两个栈实现队列 }
面试题7:{ 旋转数组的最小数字 } 面试题8:{ 斐波那契数列 }
面试题9:{ 二进制中1的个数 } 面试题10:{ 数值的整数次方 }
面试题11:{ 打印1到最大的n位数 } 面试题12:{ 在O(1)时间删除链表 }
面试题13:{ 调整整数数组使得奇数在偶数之前 } 面试题14:{ 链表的倒数第k个节点 }
面试题15:{ 反转链表 } 面试题16:{ 合并两个排序的链表 }
面试题17:{ 二叉树的子结构 } 面试题18:{ 二叉树的镜像 }
面试题19:{ 包含Min函数的栈 } 面试题20:{ 栈的压入、弹出序列 }
面试题21:{ 从上到下打印二叉树 } 面试题22:{ 二叉搜索树的后序遍历序列 }
面试题23:{ 二叉树中和为某一值的路径 } 面试题24:{ 复杂链表的复制 }
面试题25:{ 二叉搜索树与双向链表 } 面试题26:{ 字符串的排列 }
面试题27:{ 最小的k个数 } 面试题28:{ 连续子数组的最大和 }
面试题29:{ 丑数 } 面试题30:{ 第一次只出现一个的字符 }
面试题31:{ 两个链表的第一个公共节点 } 面试题32:{数字在排序数组中出现的次数
}
面试题33:{
二叉树的深度 } 面试题34:{ 翻转单词顺序vs左旋转字符串 }
面试题35:{
将字符串转换为数字 }
2.两个协议:TCP与HTTP协议
① TCP/IP协议参考书目:《图解TCP/IP协议》
[b]② HTTP协议[/b]
[b] [/b]参考书目:《图解HTTP协议》
3.三大原理:计算机原理、操作系统原理与编译原理
① 计算机系统原理参考书目:《程序是怎样跑起来的》、《深入理解计算机系统》
② 操作系统原理
参考书目:《计算机的心智-操作系统之哲学原理》
Part 0.导论
操作系统导论 {
程序的演变过程、操作系统是什么、操作系统的角色和功能 }
操作系统基本概念 {
硬件基础知识、抽象、内核态与用户态、操作系统结构、系统调用 }
Part 1.CPU管理部分:
进程原理(上){
进程模型、进程的层次结构、进程的状态、进程的缺陷 }
进程原理(中){
进程调度的定义、各种调度算法、调度异常之优先级倒挂 }
进程原理(下){
进程通信概要、各种通信方式 }
线程原理(上){
线程基础、线程同步 }
线程原理(下){
死锁描述、死锁必要条件、死锁应对方式、哲学家就餐问题、银行家算法 }
Part 2.内存管理部分:
内存管理(上){
内存管理概念、基本内存管理 }
内存管理(中){
页式内存管理、页面置换算法 }
内存管理(下){
段式内存管理、段页式内存管理 }
Part 3.外存管理部分:
外存管理(上){
磁盘定义、磁盘结构、访问时间、磁盘调度算法 }
外存管理(下){
文件系统、文件夹、文件系统的调用 }
Part 4.设备管理部分:
设备管理 {
I/O基本原理、I/O硬件与软件、I/O软件的分层 }
③ 编译原理
参考书目:《编译原理(龙书)》
熟练的面向对象之路
轻轻的一句熟悉面向对象,能够将业务逻辑转变为对象之间的交互,是一种大道至简的描述。至于面向对象,很多人都很熟悉,但却又不太熟悉。因此,我决定重新认知面向对象,下面列出我的补课成果:1.面向对象分析之UML
① OOAD利器之UML基础2.面向对象设计之设计模式
.NET核心原理理解之路
1. .NET核心基础拾遗
① 类型语法基础和内存管理基础② 面向对象的实现和异常的处理基础
③ 字符串、集合与流的基础
④
委托、事件、反射与特性的基础
⑤
多线程开发基础
⑥
ADO.NET与数据库开发基础
⑦ Web Service的开发与应用基础
2.《CLR via C#》读书笔记
暂时就先列出这么多,后期持续更新!.NET后端开发之路
1.ASP.NET MVC
自己动手写MVC框架:①
自己动手写一个简单的ASP.NET MVC框架(第一版)
② 自己动手写一个简单的ASP.NET MVC框架(第二版)
2.ASP.NET WebAPI
3.WCF
Web前端开发之路
1.HTML5+CSS3
2.Bootstrap
3.AngularJS
①AngularJS基础入门初探
移动端开发之路
1.jQuery Mobile
2.React Native
3.Cordova/PhoneGap
①Hybrid App 移动应用开发初探
Agile-敏捷软件开发之路
1.Scrum Guide Scrum指南
① Scrum Guide 原版② Scrum Guide 中文版
2.Agile 敏捷软件开发:原则、模式与实践
①Agile Software Development 敏捷软件开发基础知识
DDD-领域驱动设计之路
TDD-测试驱动开发之路
1.单元测试的艺术
①.NET单元测试的艺术:入门
② .NET单元测试的艺术:核心技术
③ .NET单元测试的艺术:测试代码
④ .NET单元测试的艺术:设计和流程
2.测试驱动开发
相关文章推荐
- mysql不同版本varchar长度的不同含义
- 团队项目个人工作总结(4.27)
- Unity3D——键盘控制移动
- 安卓 后台JSON数据转换 GSON GSONFORMAT JSON
- sql之left join、right join、inner join的区别
- 模块
- Bootloader 与 Firmware 一起用ULINK烧写方法
- 解除linux最大进程数和最大文件打开数
- eclipse查看jar源码
- 高仿京东APP
- 帮你快速实现全景应用性能可视化
- linux挂载本地windows分区或目录
- 时钟芯片默认时间
- Unity3D——物体鼠标跟随转向
- Java 正则表达式
- [置顶] [汇编学习笔记][第十四章 端口]
- 18. 4Sum
- sourceinsight必须要配置的3个选项
- [汇编学习笔记][第十四章 端口]
- 各种问题解决转载贴