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

架构师

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

高级软件工程师

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

研发经理

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

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

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

知识点细讲


C#基础

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

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

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

通信

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

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

缓存和队列

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

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

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

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

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

数据库索引

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

数据库锁事务

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

前端

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

多线程

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

数据结构

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

管理

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

自我介绍

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

大数据方案

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

常用框架

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

项目介绍

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

逻辑题

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

相关推荐