打印

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

[复制链接]
2068|51
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
13400013591|  楼主 | 2020-4-3 08:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一家小外企,产品是运行在英飞凌上,内核也是M3。
面试的技术人员称他们的系统庞大,不亚于一个小型的vxworks.
问了我几个问题,让我顿时懵逼:
1.什么是堆,什么是栈,堆和栈,哪个向下生长,哪个向上生长?------(堆向上增长,栈向下增长
2.一个字符串,是存在哪个区?--------(常量区)

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

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

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

使用特权

评论回复
评论
hobbye501 2020-4-3 16:12 回复TA
我们这里不连外网,不能百度。这才是重点。。。 

相关帖子

沙发
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位的无符号数,其它除法都需要调用库函数,效率很低

使用特权

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

使用特权

评论回复
6
Cjy_JDxy| | 2020-4-3 11:20 | 只看该作者
没考虑过这玩意。

使用特权

评论回复
7
13400013591|  楼主 | 2020-4-3 12:54 | 只看该作者
sonicll 发表于 2020-4-3 10:03
这些都是M3内核架构相关的知识,如果你只做外设驱动、应用层程序开发的话,不知道这些知识其实问题不大,但 ...

那他真的就是浪费我时间了。
我的经历简历上写的明白。
电话也面试过,电话里面我说了我就做应用,电话里面也不问我懂不懂内核。
到了现场追着内核和操作系统原理一顿问,搞得我都回答不上,深受打击。
早说要懂内核,我就会说我不懂,咱不合适,别互相浪费时间,真的是恶心了。

使用特权

评论回复
8
yizushijie| | 2020-4-3 12:58 | 只看该作者
其实我也不明白堆栈问题

使用特权

评论回复
9
m564522634| | 2020-4-3 15:08 | 只看该作者
是需要学习了,这是最基本的问题,至于他们那个系统不亚于vxworks 那就是装逼了,vxworks 是市面上唯一支持多核实时的系统

使用特权

评论回复
10
hobbye501| | 2020-4-3 16:13 | 只看该作者
有点强人所难啊。。。   有些东西  百度一下 更简单

使用特权

评论回复
11
chnycdj| | 2020-4-3 16:47 | 只看该作者
如果开发操作系统相关的话,必须要了解。
一般应用不了解也没关系的。

使用特权

评论回复
12
Prry| | 2020-4-3 18:50 | 只看该作者
堆栈是很基本的东西,是一个软件工程师必须掌握的。你不懂这些都照样写代码,说明你以往做的项目都是小型的,业务少的,代码量不多,数据结构少的,所有没有出什么毛病。建议好好补一补。

使用特权

评论回复
13
xujihu| | 2020-4-3 20:46 | 只看该作者
不能联网还去个毛线啊

使用特权

评论回复
14
YDCMAN| | 2020-4-3 21:12 | 只看该作者
本帖最后由 YDCMAN 于 2020-4-3 21:17 编辑

这个技术人员是科班出身,认为所见即所得,属于半桶水型的;面试时也曾被人问倒过,他是个博士,提了几个问题,一个都没回答出来,后来喊我去,我没肯,面试都被你问倒了,还好意思过去?

使用特权

评论回复
15
onebyte| | 2020-4-3 22:16 | 只看该作者
堆栈还是很重要的概念,主要是了解后对程序运行时的状态比较好理解。如果在嵌入式操作系统上做开发,很有必要了解。

使用特权

评论回复
16
YDCMAN| | 2020-4-4 12:04 | 只看该作者
ayb_ice 发表于 2020-4-3 09:11
一般不会有问题,

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

除非是一直做相关工作,否则都回答不出来,因为要学的东西太多,学的不用很容易忘记混淆,所以到时只能查书

使用特权

评论回复
17
xxyyzz123| | 2020-4-4 13:02 | 只看该作者
本帖最后由 xxyyzz123 于 2020-4-4 13:03 编辑

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

使用特权

评论回复
18
icecut| | 2020-4-4 13:24 | 只看该作者
人家说了嘛,你不适合这个职位.
你是做应用开发的,人家是做系统开发的.

使用特权

评论回复
19
William1994| | 2020-4-4 16:26 | 只看该作者
做操作系统,这是必备的最基本功。
做应用开发的,还真不用考虑这个东西。
估计从ATPCS里随便出个知识点考试,都答不上来。
不合适的单位不要去,去了才发现真的不合适就太晚了,相信面试者说的吧。
如果想去可以从头学一遍,很多做java的都讨厌c语言有指针和malloc,指针易出错。

使用特权

评论回复
20
雪山飞狐D| | 2020-4-5 08:30 | 只看该作者
一本书搞定,是你没看而已《深入理解计算机系统》

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

56

帖子

1

粉丝