做一个靠谱的程序员-具备主动探索的好奇心

本文探讨了调试器的功能及其背后的实现原理,如查看变量、内存、调用栈及设置断点等。深入剖析了调试器对理解程序运行时环境的重要性,并强调了掌握调试器原理对于成为优秀程序员的意义。

有一个道面试问题:

有用过调试器吧?都用过那些功能?调试器背后的实现原理,比如如何实现查看变量,查看内存,查看调用栈,如何实现断点等。

 

考察的技术点:

当我们讨论如何获取调用栈,如何查看变量时,真实的意图是考察候选人对程序运行时刻环境的理解;当我们讨论断点的设计时,其实也是在考察类似于中断/信号这种体系结构/操作系统方面的基础知识。这些知识是编写靠谱软件最最基本的知识,比数据结构还要基础。

 

如果搞不清楚调用栈布局的工程师无法理解局部变量写越界后程序为什么飞到一个莫名其妙的地方,因此他很难真正理解安全编程规范;而理解了对象运行时形态的工程师不会无意识写出故意和垃圾回收做对的代码;有些工程师在软件不能正常工作时只能通过不断回退版本分析代码文本来定位,没办法拿着core dump直接了当的分析问题,原因就是他脑袋里只有源代码,没有程序的运行时模型。换句话说他其实就是一个逻辑编程者,没错,这就是有人认为数学过关就能编好程序的原因。

 

深层次的考察品质:

调试器就像一个上帝般的存在,他和我们自己编写的程序有很大的不同–他能窥探和操纵别的程序。很难想象一个对计算机软件真正感兴趣的程序员从来没有考虑过这家伙背后的原理。

如果一个工程师从来不思考调试器的原理,那么他及有可能也不会去思考数据库的原理,不会去思考操作系统的原理,甚至也不会去思考经常使用的某个第三方库的原理。这些没有思考过的地方都是他的知识盲区,导致他永远无法有把握的编程。而且这种候选人有个对工程师来说的致命伤–缺乏主动探索的好奇心。通常进来有什么技能,出去还是那些技能。

转载于:https://www.cnblogs.com/2016me/p/5581485.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值