面试还是不写或者少写博客 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
szxczyc
V2EX    Python

面试还是不写或者少写博客

  •  
  •   szxczyc 2021-01-12 20:37:26 +08:00 8033 次点击
    这是一个创建于 1785 天前的主题,其中的信息可能已经有所发展或是发生改变。

    写了博客被面试官看到了,还说博客不错,抓着一个底层的点狂问,感觉要窒息了。

    博客里写了 Python 的线程不安全是因为 i++;等 C 语言的库原生就不是线程安全的,导致 Python 也不是线程安全的。然后被疯狂问 i++你怎么理解非线程安全?怎么想的?从底层理解解释一下?感觉要死了

    PS:面试官人很好,就是我太菜了,哭了哭了(`)

    51 条回复    2021-01-14 09:31:49 +08:00
    zhuangzhuang1988
        1
    zhuangzhuang1988  
       2021-01-12 20:41:15 +08:00 via Android   4
    过了中二期,不写 blog,大部分人写 blog 是浪费时间,又感觉自己努力的一件事情,实际上有没有提升,自己最知道了
    snxq1995
        2
    snxq1995  
       2021-01-12 20:42:50 +08:00 via Android
    写原创性观点,不然真没意思。
    Kasumi20
        3
    Kasumi20  
       2021-01-12 20:44:00 +08:00
    i++不安全,你不会加锁吗
    liuxu
        4
    liuxu  
       2021-01-12 20:47:58 +08:00
    说实话,蛮难理解为什么 i++不是线程安全的,也就是非原子操作。
    liuxu
        5
    liuxu  
       2021-01-12 20:49:34 +08:00
    @liuxu #4 高级语言使用了临时内存,i 增加后再赋值到 i 的内存中,所以非原子了。但是汇编有 inc 指令,编译器没优化吗,还是有什么特殊性。。
    caiji11
        6
    caiji11  
       2021-01-12 20:50:07 +08:00   1
    @zhuangzhuang1988 我感觉写 blog 是把自己理解了的东西 比如说跳表的结构 没感觉浪费时间 就是忙的时候就坚持下来
    liuxu
        7
    liuxu  
       2021-01-12 20:54:29 +08:00
    @liuxu #5

    相关文章表示 i++会编译成
    mov ecx,dword ptr [i]
    add ecx,1
    mov dword ptr [i],ecx ;i 自增


    所以就很奇怪,明明可以 inc <mem>的


    inc, dec Increment, Decrement
    The inc instruction increments the contents of its operand by one. The dec instruction decrements the contents of its operand by one.
    Syntax
    inc <reg>
    inc <mem>
    dec <reg>
    dec <mem>

    Examples
    dec eax subtract one from the contents of EAX.
    inc DWORD PTR [var] add one to the 32-bit integer stored at location var
    liuxu
        8
    liuxu  
       2021-01-12 21:05:56 +08:00
    @liuxu #7 不好意思,我又查了一下,inc 指令也是非原子操作,需要 LOCK 前缀才能原子操作,而且 inc 不会修改 cf 寄存器,add 会修改

    https://www.felixcloutier.com/x86/inc
    LGA1150
        9
    LGA1150  
       2021-01-12 21:07:33 +08:00
    光 inc 指令也不足以保证线程安全,如果有多个核心同时运行了一个 inc 指令呢?
    你可以参考下 Linux 内核的 atomic_inc
    https://elixir.bootlin.com/linux/v5.11-rc3/source/tools/arch/x86/include/asm/atomic.h#L49
    p2pCoder
        10
    p2pCoder  
       2021-01-12 21:10:03 +08:00
    这问题其实挺常规,挺八股的,涉及语言的内存模型以及操作系统基础
    主内存和 cpu 多级缓存 以及寄存器,计算肯定是 cpu 计算,然后赋值运算同步到主内存
    上面说到的 inc 命令,这东西涉及性能问题,我不是科班出生,对汇编了解不多,但是这东西本质和缓存系统设计差不多,如果把直接编译 inc 这种可以保证原子的操作,肯定就牺牲了多级缓存的性能,各语言也提供了对应的++对应的原子操作,毕竟大多数代码 i++操作,不是在多线程环境下运行的,直接这么编译,大多数 i++操作性能都会变差
    icyalala
        11
    icyalala  
       2021-01-12 21:15:46 +08:00
    https://godbolt.org/z/6rh7c4
    看看在线汇编就知道了

    博客还是要写的,写自己弄懂的内容。
    also24
        12
    also24  
       2021-01-12 21:24:09 +08:00   1
    从结果角度来看,我觉得这里其实取决于面试官的两种心态取向。

    A:这个人答不出的问题蛮多的,不太行。
    B:这个人懂的东西蛮多的,还不错。


    对于前者的话,在意的是给你 10 个问题你能回答出几个,那自然是浅显的问题更好。
    对于后者的话,在意的是你最多能回答出多大范围的问题,那当他提出更深的问题的时候,其实潜意识中已经认为你能够回答出更浅显的问题了。
    musi
        13
    musi  
       2021-01-12 21:47:09 +08:00
    不懂那些说些博客是浪费时间的人是怎么写博客的。。。
    aaronlam
        14
    aaronlam  
       2021-01-12 22:03:46 +08:00
    我觉得认真去写博客,的确是能一个让自己从头到尾弄懂一个问题的方式,也是能靠这种方式去梳理自己知识体系。虽然,后面会因为记忆曲线的问题而忘掉大部分细节。但是,如果回头再去看一下还是能迅速把细节轮廓建立起来。
    szxczyc
        15
    szxczyc  
    OP
       2021-01-12 22:32:32 +08:00   1
    @zhuangzhuang1988 别的不说,写一下博客整理一下东西顺带写个思维导图,记得更牢固。这是真的
    nightwitch
        16
    nightwitch  
       2021-01-12 22:38:50 +08:00   1

    不怪写博客,写的时候写的什么东西要自己去验证。
    akakidz
        17
    akakidz  
       2021-01-12 22:52:38 +08:00 via Android   3
    想开一点...说不定面试官也是看了你的博客之后恶补了一下呢...
    szxczyc
        18
    szxczyc  
    OP
       2021-01-12 23:06:23 +08:00
    @akakidz 想法很危险哈哈哈哈哈哈
    webshe11
        19
    webshe11  
       2021-01-13 00:05:18 +08:00 via Android
    跟博客没关系,就算没博客,扯到一些细节的点照样被抓住狂问
    只要不是培训班三个月出来的,对面试的东西自己死磕过一些,多少就不怕面试官死磕了
    gidot
        20
    gidot  
       2021-01-13 00:28:18 +08:00   1
    面试官私下百度恶补,面试是内心暗笑,这个逼今天装的满分。
    zsf520zsf
        21
    zsf520zsf  
       2021-01-13 07:55:40 +08:00 via iPhone
    我就是怕面试官看到我博客要问太深的东西,就没在简历贴博客地址,然而我博文里面很多不是完全原创的,时间久了自己也忘了...
    rodrick
        22
    rodrick  
       2021-01-13 08:14:28 +08:00
    面之前把博客里文章过一遍,觉得自己忘记的没搞懂的先隐藏了,面完再加回去[狗头]
    Sunnic
        23
    Sunnic  
       2021-01-13 08:20:53 +08:00 via Android
    说的越多越坏事
    yzbythesea
        24
    yzbythesea  
       2021-01-13 08:36:09 +08:00
    i++ 非线程安全不是显而易见。。。所以你都没理解线程安全和原子操作,为什么还写在博客或者放在简历里。。。
    treblex
        25
    treblex  
       2021-01-13 08:51:19 +08:00
    我会在瞎学其他语言的时候 杂七杂八的写一篇 xx 入门,以免下次又要重新入门
    wangyzj
        26
    wangyzj  
       2021-01-13 09:12:28 +08:00
    面试官也未必懂
    towry
        27
    towry  
       2021-01-13 09:33:43 +08:00   2
    面试管懂不懂不重要,就算人家不是很精通,但是这是场面试,你只要能把面试官
    说服忽悠住就是你真的厉害。

    比如面试官问你 js 中 getOwnProperty 这个方法是做啥的,你支支吾吾的说是做这个的,其实你不懂。
    假如你说不记得 js 中有 getOwnProperty 这个方法,但是有 hasOwnProperty 这个方法,这个方法是...。
    这说明你是真的懂 /精通。

    一些人面试喜欢纠结面试官是不是比自己厉害,是不是啥都懂,人家是招人的,就是要招比自己厉害的人的。
    还有一些人讨论问题不抓问题根源,喜欢纠结表面的东西,什么你也不懂了怎么怎么样。但是就是不去解决问题,去思考深层的东西。

    写博客的好处是自己写的时候会去回忆思考,并且以后再看的时候可以加深印象理解。

    所以,面试和你写不写博客没关系。
    MENGKE
        28
    MENGKE  
       2021-01-13 09:45:35 +08:00
    问到我不懂的,面试结束的时候我都是让面试官给我讲讲
    NerverLibis
        29
    NerverLibis  
       2021-01-13 09:56:31 +08:00
    写博客是为了恰饭挂广告的啦,一句话让 HR 走
    RedrumSherlock
        30
    RedrumSherlock  
       2021-01-13 09:58:05 +08:00 via Android
    虽然不怎么写博客,但是我觉得写博客最有用的是把自己理解的不全面的,浅薄,甚至错误的的给纠正补充,和自己用一个东西与教别人一个东西的区别一样
    NexTooo
        31
    NexTooo  
       2021-01-13 10:00:15 +08:00
    @aaronlam 提升自我+1,虽然我没写博客,但是我自己整理了知识点做成笔记也是一个效果
    Flymachine
        32
    Flymachine  
       2021-01-13 10:41:27 +08:00   1
    我更喜欢记笔记而不是写博客。剪藏功能是真的好使。
    博客的问题是写这东东更多的是给别人看的,不自觉就会换思维方式,写起来太累了。
    但写博客是个好习惯。
    没必要对答不上来太紧张。我面试答不上来的题多了去了,也没影响到对方录用我。

    i++的问题只要用过 C/C++写过多线程就会遇得到。C/C++没有多线程安全特性的库多了去了。就是 C++的 STL 库,比如 vector 和 string,都不是线程安全的。因为一旦考虑到多线程安全,就会损失运行效率。C/C++对此很斤斤计较,越是通用的库,越计较。于是你看到很多基于 C/C++的高级语言,比如说 PHP,会有两个版本Non Thread Safe 和 Thread Safe,就是这种情况的体现。

    至于楼上那些依赖于编译器优化的做法,老实说不太符合编程规范中对“可移植性”的要求。语言标准里未有规定,需要依赖于编译器实现的行为,属于“Undefined Behaviour” (未定义行为, 简称 UB)。这种“黑科技”不是不能用,因为确实可以节省开发精力,提升运行效率。但你必须要知道这种东西对“可移植性”的破坏,然后小心谨慎地去使用它们。一般来说,UB 能不用最好不用。
    keakon
        33
    keakon  
       2021-01-13 10:48:50 +08:00
    Python 没有 i++ 啊
    Wincer
        34
    Wincer  
       2021-01-13 11:27:33 +08:00
    楼主说的是 `n += 1` 吧,n += 1 会被解释成先计算 n+1 的值保存在中间变量里面,然后再将这个变量重新赋值给 n,这个操作最少包含两个步骤,自然不是多线程安全的。
    kingfalse
        35
    kingfalse  
       2021-01-13 11:59:05 +08:00
    自建博客,月均一篇
    guochao
        36
    guochao  
       2021-01-13 12:09:25 +08:00   1
    具体的知识点线程安全这个属于八股了,最好理解一下代码执行都发生了什么。

    博客这个,如果是作为摘抄本,是很没有必要的。经常能看到 CSDN 上面一天更新 20 篇博客,一看内容都是抄的那种,意义不大。实际上也非常厌恶这种,包括不作为的平台,因为这种垃圾生产者经常会把有价值的东西埋起来。有的博客写的非常随意,几行文字,没有任何具体的信息,也不大喜欢,因为信息总是有适用的场景的,A 解决的问题同样的方法给 B 不一定可以用。

    博客的意义在于两点,对其他人来说是共享知识的重要的途径,对于自己来说是重新审视、重新理解学过的知识的非常好的机会。

    我家里面我爹是做土木的,从小给我讲数学物理就是,先讲清楚 prerequisite,提出问题以后逐步引入新的方法或者概念,然后深入,最后留出来一个引子,让我自己朝着更深的方向做尝试。大学以后开始给别人讲东西,多多少少参照了我爹的想法,都是先一点点往回退到对方不会的地方,然后一点点引出来新的东西。再到后来写博客,虽然很多东西没有写出来,但是实际来说一篇博客从想到 idea 到写出来文章,读资料需要三天到一周写只需要一天两天,麻烦的可能从想到问题到写出来东西需要半年。文章的话一般就是问题、prequisite 、解决方法、总结的结构,作为技术博客一般也够了。
    hitmanx
        37
    hitmanx  
       2021-01-13 12:12:49 +08:00   1
    @Flymachine 话说“费曼学习法”的核心就是通过向一个一点不懂的人解释清楚一件事,来督促自己整理和消化学到的知识,其实本质上和写博客是一样的。
    Austaras
        38
    Austaras  
       2021-01-13 14:09:33 +08:00
    说白了别写自己都没搞懂的东西装逼,很难吗?
    zzzmh
        39
    zzzmh  
       2021-01-13 14:11:39 +08:00
    我写的都可以被问。。。因为写的都特别浅显,不太写底层。。。
    tankren
        40
    tankren  
       2021-01-13 14:12:09 +08:00
    你那个是写的还是转的。。
    a719031256
        41
    a719031256  
       2021-01-13 15:15:37 +08:00   2
    我写博客纯粹是当记事本用,东西多了记不住,只能写道博客里,需要时方便查找
    sheen
        42
    sheen  
       2021-01-13 15:18:16 +08:00
    @zhuangzhuang1988 我感觉写博客就是把自己的一些积累和理解总结一下,强化记忆,当然你要是说那种自己没用过,网上随便找的文章拼凑的确实没啥用
    samin
        43
    samin  
       2021-01-13 17:24:53 +08:00
    @zhuangzhuang1988

    这跟跑步是一样的 是长期才可以看出效果的东西 你写博客坚持了多久 ?
    yamasa
        44
    yamasa  
       2021-01-13 17:30:19 +08:00
    不明白 i++线程不安全说明你 CS 基础需要恶补,真的;经不住往底层问的经验,不要在面试的时候提。面试就是这样,你越写精通什么,越要有心理准备,不要打肿脸充胖子,不会就是不会。
    ruanimal
        45
    ruanimal  
       2021-01-13 17:33:15 +08:00
    python 是线程安全的啊
    Desiree
        46
    Desiree  
       2021-01-13 17:42:14 +08:00
    博客只是写给自己看的,本来给别人看就是附加分,说没用的,也在理,记录知识,博客只是一种方式,并不是结果。
    lpts007
        47
    lpts007  
       2021-01-13 17:59:30 +08:00 via Android
    @ruanimal 请问什么意思,从什么角度理解?
    ruanimal
        48
    ruanimal  
       2021-01-13 18:25:54 +08:00
    keepeye
        49
    keepeye  
       2021-01-13 18:27:55 +08:00
    这应该涉及到汇编指令非原子操作
    lewis89
        50
    lewis89  
       2021-01-13 18:50:13 +08:00
    @p2pCoder #10 不算 8 股文吧,你有兴趣可以研究我 这个博文,保障 可见性 还是有很多需要知晓 并理解的地方
    https://www.cnblogs.com/jon-winters/p/14237940.html
    Flymachine
        51
    Flymachine  
       2021-01-14 09:31:49 +08:00
    @hitmanx 啊,没错。但这么搞博客太累人了,而自己记笔记只要自己能看得懂就行。相较于博客,我更喜欢在公司内部开分享会,准备周期更长,更系统,还有真人提问,查漏补缺的效果更好。就是周期太长...
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4717 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 115ms UTC 09:47 PVG 17:47 LAX 01:47 JFK 04:47
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86