面试遇到奇葩问题,和大家分享一下

[复制链接]
 楼主| 13400013591 发表于 2020-4-3 08:24 | 显示全部楼层 |阅读模式
一家小外企,产品是运行在英飞凌上,内核也是M3。
面试的技术人员称他们的系统庞大,不亚于一个小型的vxworks.
问了我几个问题,让我顿时懵逼:
1.什么是堆,什么是栈,堆和栈,哪个向下生长,哪个向上生长?------(堆向上增长,栈向下增长
2.一个字符串,是存在哪个区?--------(常量区)

我真的不明白,堆栈系统怎么分配从来没考虑过,变量存在哪个区,我也没考虑过。

我回答:这些平时编程不考虑,我一般只考虑线程栈的大小,内部不要超过这个大小即可。
他说不行,这些编程必须考虑,你不考虑这些说明你不适合这个岗位。
我说:这些基础不影响我编程,出bug也不会在这些地方,这些东西我要的时候百度即可。
他说我们这里不连外网,不能百度。
............

问问各位大佬,是我水平太差了?这些东西做项目的时候会考虑嘛?还是说这面试官就是在考我的操作系统基础?

评论

我们这里不连外网,不能百度。这才是重点。。。  发表于 2020-4-3 16:12
ayb_ice 发表于 2020-4-3 08:38 | 显示全部楼层
栈是CPU用的,堆就是动态内存分配用的区

栈一般是向下生长的(但也有向上生长的,比如51,这取决于内核设计)

堆是软件控制的,所以向上生长的(没有必要向下生长)


 楼主| 13400013591 发表于 2020-4-3 09:02 | 显示全部楼层
ayb_ice 发表于 2020-4-3 08:38
栈是CPU用的,堆就是动态内存分配用的区

栈一般是向下生长的(但也有向上生长的,比如51,这取决于内核设 ...

大神,我就想问问,这些知识假设我一点概念没有,那么什么情况下我写的代码逻辑会出问题?
ayb_ice 发表于 2020-4-3 09:11 | 显示全部楼层
本帖最后由 ayb_ice 于 2020-4-3 09:13 编辑
13400013591 发表于 2020-4-3 09:02
大神,我就想问问,这些知识假设我一点概念没有,那么什么情况下我写的代码逻辑会出问题? ...

一般不会有问题,

但了解更多,出问题的时候更容易解决,

对于MCU而言,了解更多的硬件,内核特点,才能更好的控制他,写出高效的代码,

比如在一个没有硬件浮点的MCU上无节制的使用浮点数,造成效率低下,同理在一个没有除法指令的mcu上,尽量不用除法,哪怕有除法,比如51,但他只支持8位除8位的无符号数,其它除法都需要调用库函数,效率很低

评论

硬件浮点这个晓得的,hard float ,HF; 说是我栈我真心只考虑过Linux多线程中,分配给线程的栈多大,里面的内存要控制在栈大小80%以内以防止stack overflow 。 裸机的代码,我遇到的项目没有把整个CHIP的资源吃干榨净的,所以我就没有考虑CPU资源分配问题。 也没有遇到过因为我不懂这些而写出bug的情况。 看来公司是想找个很熟悉这块的人,我不合适。 感谢大神回复!  发表于 2020-4-3 09:17
sonicll 发表于 2020-4-3 10:03 | 显示全部楼层
这些都是M3内核架构相关的知识,如果你只做外设驱动、应用层程序开发的话,不知道这些知识其实问题不大,但是了解内核架构对你做MCU应用开发有很大的帮助。做为招聘方,同样都是写代码的,我肯定更喜欢懂内核架构的
Cjy_JDxy 发表于 2020-4-3 11:20 | 显示全部楼层
没考虑过这玩意。
 楼主| 13400013591 发表于 2020-4-3 12:54 | 显示全部楼层
sonicll 发表于 2020-4-3 10:03
这些都是M3内核架构相关的知识,如果你只做外设驱动、应用层程序开发的话,不知道这些知识其实问题不大,但 ...

那他真的就是浪费我时间了。
我的经历简历上写的明白。
电话也面试过,电话里面我说了我就做应用,电话里面也不问我懂不懂内核。
到了现场追着内核和操作系统原理一顿问,搞得我都回答不上,深受打击。
早说要懂内核,我就会说我不懂,咱不合适,别互相浪费时间,真的是恶心了。
yizushijie 发表于 2020-4-3 12:58 | 显示全部楼层
其实我也不明白堆栈问题
m564522634 发表于 2020-4-3 15:08 | 显示全部楼层
是需要学习了,这是最基本的问题,至于他们那个系统不亚于vxworks 那就是装逼了,vxworks 是市面上唯一支持多核实时的系统
hobbye501 发表于 2020-4-3 16:13 | 显示全部楼层
有点强人所难啊。。。   有些东西  百度一下 更简单
chnycdj 发表于 2020-4-3 16:47 | 显示全部楼层
如果开发操作系统相关的话,必须要了解。
一般应用不了解也没关系的。
Prry 发表于 2020-4-3 18:50 | 显示全部楼层
堆栈是很基本的东西,是一个软件工程师必须掌握的。你不懂这些都照样写代码,说明你以往做的项目都是小型的,业务少的,代码量不多,数据结构少的,所有没有出什么毛病。建议好好补一补。
xujihu 发表于 2020-4-3 20:46 | 显示全部楼层
不能联网还去个毛线啊
YDCMAN 发表于 2020-4-3 21:12 | 显示全部楼层
本帖最后由 YDCMAN 于 2020-4-3 21:17 编辑

这个技术人员是科班出身,认为所见即所得,属于半桶水型的;面试时也曾被人问倒过,他是个博士,提了几个问题,一个都没回答出来,后来喊我去,我没肯,面试都被你问倒了,还好意思过去?
onebyte 发表于 2020-4-3 22:16 | 显示全部楼层
堆栈还是很重要的概念,主要是了解后对程序运行时的状态比较好理解。如果在嵌入式操作系统上做开发,很有必要了解。
YDCMAN 发表于 2020-4-4 12:04 | 显示全部楼层
ayb_ice 发表于 2020-4-3 09:11
一般不会有问题,

但了解更多,出问题的时候更容易解决,

除非是一直做相关工作,否则都回答不出来,因为要学的东西太多,学的不用很容易忘记混淆,所以到时只能查书
xxyyzz123 发表于 2020-4-4 13:02 | 显示全部楼层
本帖最后由 xxyyzz123 于 2020-4-4 13:03 编辑

堆栈,在数据结构和操作系统两个领域里,有不同的含义,估计是历史原因吧
每个操作系统都不一样,LINUX和WINDOWS可能一样,在51系统的小编译器里,又不一样。
而在我自己设计的操作系统里,又不一样。

icecut 发表于 2020-4-4 13:24 | 显示全部楼层
人家说了嘛,你不适合这个职位.
你是做应用开发的,人家是做系统开发的.
William1994 发表于 2020-4-4 16:26 | 显示全部楼层
做操作系统,这是必备的最基本功。
做应用开发的,还真不用考虑这个东西。
估计从ATPCS里随便出个知识点考试,都答不上来。
不合适的单位不要去,去了才发现真的不合适就太晚了,相信面试者说的吧。
如果想去可以从头学一遍,很多做java的都讨厌c语言有指针和malloc,指针易出错。
雪山飞狐D 发表于 2020-4-5 08:30 | 显示全部楼层
一本书搞定,是你没看而已《深入理解计算机系统》
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

56

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部