有一次面试cpp,我说到不同线程是可以访问对方栈内容的,被鄙视

stub
stub 2019-12-11 字数 338

关于我说进程和线程没什么区别, 是引用的 Robert Love的帖子, Robert Love在quora上曾解答过这个问题,

并且我刚解释了一点虚拟内存,准备继续解释地址空间, 进程组, clone参数,内核栈等但是面试官很不屑, 直接岔开了, 后来又继续问这个问题, 很奇怪

另外, 面试官一直在抠一些细节, 比如long占几个字节这些,我说这看编译器,但是面试官也显然不认同[emc21]

Programming 编程技术
2 个Like
83 个回复
stub
stub 2019-12-11

最后是一轮游。

z16166
z16166 2019-12-11

怎么个鄙视法?

stub
stub 2019-12-11

开始也问我进程和线程的区别,我说Linux上没什么区别blabla,面试官也不以为然,看着像认为我对线程基本没什么认识

【 在 z16166 的大作中提到: 】

: 怎么个鄙视法?

stub
stub 2019-12-11

这个面试官是原来的面试官找临时找的他的小弟。被一轮游还是有些意外

【 在 z16166 的大作中提到: 】

: 怎么个鄙视法?

NGYxYmQ
>>> 2019-12-11

咋访问

【 在 stub () 的大作中提到: 】

:  --

adu
阿杜 2019-12-11

要察言观色看对方水平

根据对方水平给出他的水平能理解的答案

不然会被鄙视

发自「今日水木 on 假手机」

【 在 stub 的大作中提到: 】

: --

stub
stub 2019-12-11

简单的方式得到对方栈的地址即可,或者某一局部变量的地址也行

【 在 NGYxYmQ 的大作中提到: 】

: 咋访问

javaboy
喝了咖啡就话多-_-; 2019-12-11

一个线程里把局部变量的地址写到一个全局变量里,另一线程读了再引用即可。

【 在 NGYxYmQ (>>>) 的大作中提到: 】

: 咋访问

hgoldfish
老鱼 2019-12-11

这个“可以”是什么意思呢?“可以做”和“可以做到”都是“可以”,但有区别。

并发编程里面,不要直接使用共享内存,而是应该把共享内存当作一种通信机制。日常开发只使用这个通信机制。

【 在 stub () 的大作中提到: 】

leslin
我心有约 2019-12-11

能够访问到其他线程栈其实挺自然的事情

你再说能访问到其他线程的TLS就更厉害大发了

【 在 stub 的大作中提到: 】

xiaoju
可爱的龙猫 2019-12-11

话是没错,但妥妥熊孩子搞法啊

【 在 stub 的大作中提到: 】

xiaoju
可爱的龙猫 2019-12-11

共享内存还是不可缺少的,否则高频异步的效率就太低了,但需要对象生命周期管理。

【 在 hgoldfish 的大作中提到: 】

: 这个“可以”是什么意思呢?“可以做”和“可以做到”都是“可以”,但有区别。

: 并发编程里面,不要直接使用共享内存,而是应该把共享内存当作一种通信机制。日常开发只使用这个通信机制。

stub
stub 2019-12-11

面试吗,你没经历过面试中

int x = 10;

inc();

封装inc函数使x变为11吗?

【 在 xiaoju 的大作中提到: 】

: 话是没错,但妥妥熊孩子搞法啊

xiaoju
可爱的龙猫 2019-12-11

你这个问题答的不对啊

进程是资源管理的集合对象,线程是代表“执行”这种资源的对象,这是现代OS的定义;

具体到Linux,上古时代只有进程,今天的线程实质是被阉割到和其它友商一样高效的超轻量级进程。

比较有趣的对比是,远古Linux的线程过重,而远古Windows的进程过重。

【 在 stub 的大作中提到: 】

: 开始也问我进程和线程的区别,我说Linux上没什么区别blabla,面试官也不以为然,看着像认为我对线程基本没什么认识

xiaoju
可爱的龙猫 2019-12-11

这个是面试入侵代码编写么?不是新闻说什么博士写这个后来进去了的。

【 在 stub 的大作中提到: 】

: 面试吗,你没经历过面试中

: int x = 10;

: inc();

: ...................

stub
stub 2019-12-11

这个没听说

【 在 xiaoju 的大作中提到: 】

: 这个是面试入侵代码编写么?不是新闻说什么博士写这个后来进去了的。

stub
stub 2019-12-11

我知道这些概念,奈何当时抖了机灵被一轮游,惨

【 在 xiaoju 的大作中提到: 】

: 你这个问题答的不对啊

: 进程是资源管理的集合对象,线程是代表“执行”这种资源的对象,这是现代OS的定义;

: 具体到Linux,上古时代只有进程,今天的线程实质是被阉割到和其它友商一样高效的超轻量级进程。

: ...................

xiaoju
可爱的龙猫 2019-12-11

其实C++的坑人之处就在于需要太多的CS专业课才能安全驾驶,不如C#和Java简单耐操。

一般来说一个语言设计的越好,码农工钱就越少。最终形态是不需要编码这一环节了。

【 在 stub 的大作中提到: 】

: 我知道这些概念,奈何当时抖了机灵被一轮游,惨

z16166
z16166 2019-12-11

光说相同之处,不说差异之处,容易被人误解你知道的东西不准确。

【 在 stub 的大作中提到: 】

: 开始也问我进程和线程的区别,我说Linux上没什么区别blabla,面试官也不以为然,看着像认为我对线程基本没什么认识