做好战斗准备
如果你考虑做软件过程,确保了解一些***常见的编程面试问题,比如“FizzBuzz”:写一个程序打印从 1 到 100 的数字。但是如果数字是 3 的倍数的话则打印“Fizz”,如果数字是 5 的倍数则打印“Buzz”。如果同时是 3 和 5 的倍数则打印“FizzBuzz”。CodeWars,这个网站收集了大量的编程问题,你可以运用各种语言在浏览器里面去解决这些问题。来自 Coding Horror
听起来很简单,是吧?
好吧,但其实绝大部分面试者都没能通过这一简单的测试,且不说更复杂的变种了。
我个人曾经见过很多角逐岗位的候选人在拥有完全互联网访问的情况下没能通过这一测试。所以如果你的简历上面列有编程语言的话,确保你知道如何用它来编写实现 FizzBuzz 程序。否则的话,你只不过是在浪费所有人的时间,包括你自己的。
2. 关于技术 a) 开发语言和技术。
你可能在自己的简历里写你会十几种语言,精通上百种技术(尽管有些你可能只会写“Hello World”),但你肯定还是倾向于运用自己熟悉的语言和技术来工作。所以很好还是问清楚。
b) 开发平台。
我本人熟悉并且喜欢Windows平台开发,如果做其他的,我会感到不舒服。所以也会问清楚。
c) 开发工具(包括:IDE、SC、DTS、QA、Process等工具)。
这个并不是个主要的问题,但是如果你有所了解,碰巧你后面还有多轮面试,你可以事先做些功课,准备准备,不至于被人问住。
d) 系统构架。
了解系统构架,一方面可以事先了解你将来要工作在什么样的构架下,另一方面,可以向面试官展现一下你更关注宏观、全局的问题,这也是作为管理者的软素质的表现。
是因为我认为NoSQL解决方案不如RDBMS解决方案吗?当然不!
是因为我专注于SQL的做事方式,而不想陷入一种相对较新的技术的不确定性吗?不,也不是!事实上,我非常兴奋地学习和使用各种分布式数据库提供的设施。
那我为什么要写这个?
原因很简单——几年前,我见证了设计一个为遥测事件提供模式管理设施的系统。事实证明,这比***初计划的要昂贵得多。为什么呢?因为选择了错误的数据库解决方案。
这个系统的一个要求是确保模式编辑是一致的,并且模式的很新版本被显示给每个模式编辑器。它还应该支持并发编辑。
此外,同时访问这个系统的用户数量永远不会超过几百个。存储的数据量不会是Tb级——***多几百Gb。
因此,如果我们考虑了CAP定理的权衡,那么选择应该是显而易见的——使用RDBMS。这样做的好处是支持系统的一致性和事务支持需求。
相反,选择了NoSQL数据库(Azure表存储)来进行原型设计。这一选择的原因是,它使原型设计更快,并提供了更大的灵活性,同时更新了单个遥测事件的模式。与Azure SQL相比,Azure表存储的低成本被认为是另一个原因。
版权所有©2025 产品网