补充《解析“60k”大佬的19道C#面试题(上)》
【广州.NET技术俱乐部】微信群的周杰写了一篇文章《解析“60k”大佬的19道C#面试题(上)》https://www.cnblogs.com/sdflysha/p/20200325-19-csharp-interview-question-from-60k-boss-1.html,写得很好,很赞!
我做点补充。
首先这些知识真的是会在实际项目中用到的,而且还能影响到项目的成败。如果你对高盛银行、瑞士银行等投资银行和私人银行的Fintech业务有了解的话,你可能会深有体会。
这些知识点和背后的数学原理也在我翻译的第一本书《.NET并发实战》里有十分系统的讲到,可惜因为新冠疫情,该书要延后到六月份才能出版。
那么:
第一个问题,为什么很多人反映这些知识在工作中根本用不到呢?
因为这些人的主要工作是web应用。在我所翻译的《.NET并发实战》一书里面讲到,web应用是尴尬的并行,所以该书使用了WPF来做案例。
第二个问题,为什么很多人反映这些知识并没有给自己带来高工资?
还是因为这些人的主要工作是web应用。工作中用不到这些知识,这些知识并没有给企业带来任何商业价值。既然没有给企业带来任何商业价值,那么为啥企业要给你对应的工资呢?
第三个问题,那么什么样的工作会运用到这些知识点,从而给自己带来高工资呢?
就.NET来讲,是Windows客户端和Office应用,一个以商业价值为导向的、以选择最合适的技术来做项目的项目经理,如果需要做Windows客户端和Office应用开发应用,都会首选使用.NET里的WPF和VSTO。而WPF就会用到这些知识点,这也是我所翻译的《.NET并发编程实战》一书使用WPF来做案例的原因之一。
第四个问题,也在用WPF,也用到这些知识点,为啥就工资不高呢?
技术本身不赚钱,技术所带来的商业价值才赚钱。比如制造业,本身利润就不高,那你在制造业里使用WPF工资不高是正常的。金融业,利润高,如果你使用了WPF能给企业带来价值,从而得到对应的回报就很符合逻辑了。
第五个问题,现在互联网工作机会多,WPF工作机会少啊
工作机会再多,你也只能做一份工作啊。所以工作机会多不多是个伪命题。最重要工资高就可以了啊。互联网风头很猛,然而翻翻世界五百强,里面有多少家互联网企业,分别排第几名,里面有多少家金融企业,分别排第几名。
我最近基本不看朋友圈和facebook了,因为看了朋友圈感觉某国要亡国了,看了facebook感觉另一个某国要亡国了,我都不知道信哪个好。IT全名叫做信息技术,我们做信息技术这行的,也要对信息有个判断能力啊。不能因为互联网的声音大就觉得互联网铁定牛。
第六个问题,前面的条件都满足了,知识点都掌握了,为什么面试没过呢?
就我本人所了解到的,高盛银行、瑞士银行等投资银行和私人银行高薪职位面试肯定会问数学相关知识,你知道了这些知识点,答不上后面的数学原理,当然过不了面试啦。
第七个问题,连这些知识点背后的数学原理都掌握了,为啥面试还是没过呢?
我所翻译的《.NET并发编程实战》一书连这些知识点背后的数学原理都讲述了。你看了之后跑去面试,还是没过,为啥呢?
当过面试官的同学都知道,肯定会问项目实际经验啊。
当面试官问到,你能讲讲你在做实际项目中是如何运用到这些知识点的吗?
有人就会答,每一个asp.net项目都会用到async/await啊。
然而async/await并不是什么时候都适用的啊,能讲讲什么时候不适用吗?
这个问题就真的需要有实际项目经验的人才能答上了,比如在不同代际技术模块边界是不适用的,比如在单元测试中要对WPF写的弹出对话框进行单元测试则不能使用await,因为使用await反而适而其反,功能都不能实现了。
好啦,你这么回答之后,面试官接着就问第二个问题了,如何对WPF写的弹出对话框进行单元测试呢?
如果按照winform的写法来写WPF,当然是不能对的弹出对话框进行单元测试啦。
但是如果是用MVVM模式来写WPF,就变得可测试了。微软官方文档:使用 MVVM 编写可测试的表示层https://docs.microsoft.com/zh-cn/archive/msdn-magazine/2013/november/mvvm-writing-a-testable-presentation-layer-with-mvvm
那么问题里所指的弹出对话框是指messagebox.show和showdialog吗?
在实际项目经验中,当你使用MVVM模式来写WPF的话,你肯定不会再用messagebox.show和showdialog这类方式来弹出对话框。这类方式明显就不是MVVM模式,viewmodel是不知道view里面的东西的啊。
总结:以上这些点如果你没有实际项目经验,真的就答不上了。
额外再说一个问题,只有async没有await的情况下会构成状态机吗?
从学术和试验性代码的角度来说,是会构成的。
但是在实际项目应用中,从工程应用的角度来说,是有可能不会的(web应用这种尴尬并行不是.NET并发并行研究课题中的主流)。
只要做过有商业价值的实际项目,只要使用过我正在翻译的另外一本书《.NET内存管理宝典》里的知识(该书有一千一百页之厚,你可能要慢慢找,不过很值得你去学习),就会发现,可能是不会的,类似的原理是:“编译器/JIT 短路评估”(“Short circuit evaluation and side effect”)。这就是一个很能考察到有没有实际项目经验的问题。
第八个问题,我已经身在高盛银行、瑞士银行等投资银行和私人银行里面了,为啥我的工资还是不高?
你所在职位面试时有问到数学吗?工作过程中有用到数学吗?银行里这么大,项目这么多,有不少项目是用不到数学的,商业价值也不高。如果你所做的项目商业价值不高,用不到数学,那工资不高也是正常的啊。高盛银行、瑞士银行只能保证你的工资下限高于其他公司的工资下限。至于工资上限,无论是哪家公司,都是要看你给公司所创造的商业价值的啊。
In the end, 最近这半年,我主要精力集中在以金融科技为核心的香港.NET俱乐部上,主要研究.NET的商业价值、IT在投资银行和私人银行里的应用,技术方向是WPF、VSTO和人工智能,已经很少关注广州.NET俱乐部了。今天看到广州.NET俱乐部还能产出这么高质量的文章,我内心甚感欣慰,在此对大家表示感谢。最后给大家一个信心:如果要开发windows桌面端应用和office应用,.NET还是占据垄断地位的。(可以回头看看第五个问题的答案)
风险提示:.NET世界之大,各个行业各个应用各个角度都可能得出不同的观点,因此我的以上观点并不一定适用于你。本文不对你采取本文观点所造成的损失负责。
补充《解析“60k”大佬的19道C#面试题(上)》的更多相关文章
- 解析“60k”大佬的19道C#面试题(上)
解析"60k"大佬的19道C#面试题(上) 先略看题目: 请简述async函数的编译方式 请简述Task状态机的实现和工作机制 请简述await的作用和原理,并说明和GetResu ...
- 解析“60k”大佬的19道C#面试题(下)
解析"60k"大佬的19道C#面试题(下) 在上篇中,我解析了前 10 道题目,本篇我将尝试解析后面剩下的所有题目. 姐妹篇:解析"60k"大佬的19道C#面试 ...
- 100道c++面试题(上)
1. new, delete, malloc, free关系 new/delete是c++的运算符,delete会调用对象的析构函数: malloc/free是c/c++的标准库函数,free只释放内 ...
- 509道Java面试题解析:2020年最新Java面试题
<Java面试全解析>是我在 GitChat 发布的一门电子书,全书总共有 15 万字和 505 道 Java 面试题解析,目前来说应该是最实用和最全的 Java 面试题解析了. 我本人是 ...
- 19道常见的JS面试算法题
最近秋招也做了多多少少的面试题,发现除了基础知识外,算法还是挺重要的.特意整理了一些常见的算法题,添加了自己的理解并实现. 除此之外,建议大家还可以刷刷<剑指offer>.此外,左神在牛客 ...
- 「剑指offer」27道Mybatis面试题含解析
1.什么是Mybatis? Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动.创建连接.创建statement等繁杂 ...
- 【19道XSS题目】不服来战!
记得第一次接触xss这个概念是在高中,那个时候和一个好基友通过黑客X档案和黑客手册.第一次接触到了除了游戏以外的电脑知识,然后知道了,原来电脑除了玩游戏还可以搞这些,从此两人一发不可收拾的爱上了玩黑这 ...
- 2019年19道java经典面试题(附答案)
1.不可变对象 指对象一旦被创建状态不能再改变.任何修改都会创建一个新的对象,如 String.Integer及其它包装类. 2.能否创建一个包含可变对象的不可变对象? 可以.不要共享可变对象的引用就 ...
- 【19道XSS题目】不服来战!(转)
[19道XSS题目]不服来战! 记得第一次接触xss这个概念是在高中,那个时候和一个好基友通过黑客X档案和黑客手册.第一次接触到了除了游戏以外的电脑知识,然后知道了,原来电脑除了玩游戏还可以搞这些,从 ...
随机推荐
- getshell技巧-phpMyAdmin的利用
生活就是泥沙俱下,鲜花和荆棘并存.--毕淑敏 1.明确目标2.信息收集3.漏洞挖掘和利用 信息收集 明确路径 利用目录扫描工具,对目标网站进行扫描,获取网站目录.常用工具有Kali中的DirBuste ...
- ubuntu采用apt方式安装多个版本php-fpm
适用系统:Ubuntu 16.04 LTS / Ubuntu 14.04 LTS 安装 PHP Ondřej Surý 的 PHP PPA 为 Ubuntu 16.04/14.04 提供了 PHP7. ...
- Hellc
[题目描述] 作为一个生活散漫的人,小 Z 每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小 Z 再也无法忍受这恼人的找袜子过程,于是他决定听天由命-- 具体来说,小 Z 把这 ...
- 如何通过学校系统漏洞注册到 @edu.cn 邮箱账号?
此文章仅针对我自己学校的系统进行分析,并不代表所有学校的系统都是如此. 我们学校比较"抠",可能是为了节省学校的带宽资源然后禁止学生注册教育邮箱账号.不过像一部电影所说的那样&qu ...
- 6487. 【GDOI2020模拟02.29】列强争霸war
题目描述 区间绝对众数 即出现次数>len/2下取整的数 对于区间[L,R]扫一遍,维护一个数x和出现次数s 当前数=x则s+1,否则s-1,若s已为0则把x设为当前数 若区间内存在绝对众数,那 ...
- 第二章 表与指针Pro SQL Server Internal (Dmitri Korotkev)
聚集索引 聚集索引就是表中数据的物理顺序,它是按照聚集索引分类的.表只能定义一个聚集索引. 如果你要在一个有数据的堆表中创建一个聚集索引,如2-5所示,第一步要做的就是SQL服务器创建另一个根据聚集索 ...
- Ubuntu 16.04 apt 国内源
一.推荐几个 Ubuntu 16.04 国内的 apt 源 1. 阿里源 # deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ - Release amd64 (2 ...
- qt creator源码全方面分析(3-3)
目录 qtcreatordata.pri 定义stripStaticBase替换函数 设置自定义编译和安装 QMAKE_EXTRA_COMPILERS Adding Compilers 示例1 示例2 ...
- MacOS麦克风输入监听的方法
Windows上很多人都知道,然而实际上并没什么用——延迟太大,根本没法用. MacOS上有两种方法: QuickTime Player新建音频录制(不需要真的录音),如下图: 这个方法和Window ...
- python基本数据类型的操作
1 列表和元组 1.列表基本操作 1. 列表赋值 a = [1,2,3,4,5,6,7,8] a[0] = 100 #the result : [100, 2, 3, 4, 5, 6, 7, 8] 2 ...