高级软件工程师和架构师的区别

架构师

倾向于 通信 、 通信框架 、队列和 分布式框架运用以及阿里云和微软现有分布式组件的运用。


高级软件工程师

倾向于 C#基础、 多线程、锁和数据库索引 (队列和通信也会问只是会问的浅一些)


研发经理

包含高级软件工程师问的这些外,还会问管理方面的知识


我面试的三家公司分别面试了三个职位,将知识点进行了一个表格整理,分值越高就意味着问的越深,不能百度之百准确,只当参考。


职位
C#基础
通信
缓存和队列
数据库索引
数据库锁事务
前端
多线程
数据结构
管理
自我介绍
大数据方案
常用框架
项目介绍
逻辑题
架构师
10
100
100
100
80
0
100
100
30
100
100
50
100
100
研发经理
100
50
70
70
50
0
100
80
100
100
60
0
100
50
高级软件工程师
100
50
70
100
100
50
100
50
0
100
70
100
100
60


知识点细讲


C#基础


主要面些 接口、装箱拆箱、值类型引用类型和线程


可以参考面试基础:http://www.donet5.com/Doc/4/63


例如:什么是装箱和拆箱,装箱和拆箱为什么会影响性能。这些属于深问细节,所以要做好防问准备。



通信

主要分为Http协议 TCP协基础知知识,通信框架例如开源的Supersocket RestSharp,微软的WCF和Signalr等等的运用和搭建,

更深入的会问到,例如 什么是粘包和osi七层模型等理论知识。



缓存和队列

例如redis框架使用,Redis有哪些数据类型,主从模式如何实现,常用的队列框架有哪些(RabbitMQ和MSMQ)

队列和缓存的区分是什么?非关系型数据库应用场景又是什么?

队列:适合处理高并发,可以看这篇文章理解队列作用:http://www.donet5.com/Ask/11/1070

非关系型数据库:适合简单业务数据亿级左右的数据处理,太多、太少或者业务复杂都不适合

缓存:缓存数据也可以当做高性能队列使用


数据库索引

数据库索引是每次面试必问之题,你要了解索引的分类,索引的存储结构,数据存储结构,如何用SQLServer分析SQL执行计划,聚集索引适用于什么场合,聚集索引和非聚集索引的区别


数据库锁事务

例如会问 数据库的隔离级别,数据库有哪些锁,可以参考:http://www.donet5.com/Ask/11/1079


前端

你会使用哪些前端框架,如何适应移动端布局等等,这类会问的比较少


多线程

一般会问什么情况会用多线程、LOCK底层实现,多线程性能优化等


数据结构

这个就去看数据结构与算法的书吧,例如什么是二叉树,不要不懂。


管理

一般会问如何管理好团队,去看一本项目管理的书装逼就够用了。


自我介绍

自已准备好,一般说名字 学历,工作经验,幸趣爱好等。不要太长,10句左右差不多背好去面试。


大数据方案

这个一定要了解阿里或者微软的云框架,除此之外还要知道队列如何处理大数据,分布式缓存等,例如hadoop这些名词要了解,你了解什么分布式中间组件。


常用框架

aufac底层原理,aufac有哪些使用模式,依赖注入和控制反转有什么区别,依赖注入的作用,用过哪些ORM他们各自的优点有哪些等。


项目介绍

一般会问你的项目细节,使用了哪些技术


逻辑题

这些都是用排除法的思路去做,或者结合程序算法