我是去面试 c++,从一开始面试官就趾高气昂的
面试官: 给一个 char 赋值 500 会不会报错
我的回答: 具体会不会报错取决于编译器实现,有可能会有警告
面试官: 肯定会报错,不信去试,因为 char 的取值范围是-127-128 (然后就被鄙视了按说不应该是 -128-127 么,我并没有反驳)
tcp 粘包问题,这个问题我都没听说过,算是我孤落寡闻吧,不过我搜了一下,这不是最基础的 tcp 通信原理问题么,定义好应用层的就没问题啊。
面试官:你们用什么 linux
我的回答:debian
面试官: 哦,我们不用那个,我们用 ubuntu (也不知道是我发音不准,面试官不知道这个,我作为一个 arch/debian 9 年用户 再一次被鄙视)
最后面试官说我是初级程序员水平,虽然可能我水平本身不是很高,但单凭这种问题就能判断么,我是不是可以怀疑面试官的水平了?
1 privatetan 2023-05-31 09:05:29 +08:00 ![]() 有请粘包警察入场 |
![]() | 2 evill 2023-05-31 09:05:36 +08:00 ![]() 不用怀疑,专门问 liunx 的问题却不知道 debian ,可想而知面试官的水平 |
![]() | 3 hidemyself 2023-05-31 09:05:55 +08:00 ![]() 粘包警察来咯。 TCP 粘包已在本站有过大量讨论 |
4 zhq566 2023-05-31 09:06:32 +08:00 我也认为面试官水平差点意思。 |
5 dlsflh 2023-05-31 09:07:52 +08:00 多大的公司啊,怎么听你描述就是个小作坊的水平? |
![]() | 6 gps949 2023-05-31 09:10:49 +08:00 啥岗位问这些问题? linux 网络驱动开发? 用 ubuntu 的有啥理由鄙视 debian ?如果是用 CentOS 系或者 SUSE 系的鄙视 debian 系的倒还能接受,毕竟不是一个体系的。 话说回来,个人觉得面试问啥技术问题其实并没啥意义,不同于笔试面试即使是问技术,说到底其实还是个看眼缘的事情,面试觉得被鄙视了无所谓,只能说面试官跟你聊不来而已。 |
![]() | 7 timeromantic 2023-05-31 09:12:12 +08:00 ![]() 我是粘包警察 根据粘包修正法第 25 章第一条: 首先“粘包”是不存在的,“粘包”这一个词主要是面向低水平或者没有受过比较系统的网络编程学习的读者。 因为 TCP 是没有包这个概念的,都是流。 那么既然没有包这个概念了,那么“粘包”如何谈起?显然包这概念就出现在应用层了( TCP/IP 五层网络模型)。“粘包”本质上就是如何从流里面提取信息出错。导致好像两个信息好像粘连在一起一样。 实际上这是一个解析错误,本质是对二进制数据解析出错。根本不是 TCP 的问题,是应用层的信息解析器写得太烂了。出现解析错误,无法正确处理从 socket 里面读取的数据。 |
![]() | 8 wu67 2023-05-31 09:12:50 +08:00 ![]() 一直都很奇怪这些技术面试官为什么有这样的优越感. 面试要是成了, 那大家是同事, 要是没成, 也还是同行, 有必要这样恶心人么, 只会让别人觉得这是个奇葩 |
9 LandCruiser 2023-05-31 09:13:20 +08:00 问这种问题就意味着人家只是想招初级的 |
![]() | 10 luzemin 2023-05-31 09:14:01 +08:00 ![]() 说到 TCP 粘包,我就忍不住要说了,不过,在我说之前,我先把话筒交给楼下 |
![]() | 11 mango88 2023-05-31 09:14:19 +08:00 看描述,不去也罢 |
![]() | 12 BeforeTooLate 2023-05-31 09:16:02 +08:00 题外话:debian 大家怎么念的 蝶变?迪斑? 达便安? |
13 oamu 2023-05-31 09:18:45 +08:00 @BeforeTooLate 迪币恩,有和我一样的么 |
14 imxiaoi OP @BeforeTooLate 我念 "的儿便" |
15 Donahue 2023-05-31 09:22:54 +08:00 ![]() 越菜的人越觉得自己很牛逼 |
![]() | 16 MoliOOO 2023-05-31 09:23:53 +08:00 ![]() 面试就像相亲,不合适就算了,对方的态度别往心里去 对方说你这样不足那样不对,也不一定都是事实 |
![]() | 17 dcsite 2023-05-31 09:24:09 +08:00 ![]() |
![]() | 18 codehz 2023-05-31 09:27:05 +08:00 via iPhone 虽然 char 确实没规定最大多少吧,但考虑一般情况,预定-128-127 问题不大,非要考虑特殊,那也就考虑 0-255 的平台( 至于那些 char 不是 8bit 的平台,除非是极其特殊环境,不然正常情况就不应该在考虑范围内 ( 不过报错是另一个问题,c/c++的一大坑点就是整数转换溢出不是错误,也不要求诊断( |
19 Phil1024 2023-05-31 09:27:38 +08:00 为了压价 |
![]() | 20 shyrock 2023-05-31 09:32:08 +08:00 ![]() debian->大便 |
![]() | 21 Rexxar 2023-05-31 09:33:25 +08:00 念大鞭 |
![]() | 22 z1645444 2023-05-31 09:35:08 +08:00 感觉进去以后或者开价了,都是不会怎么满意的 XD |
![]() | 23 darksword21 PRO ubuntu 还有资格鄙视别人? |
![]() | 24 cosmain 2023-05-31 09:48:00 +08:00 虽然不管粘包在 v 站是不是政治正确,但是“作为一个 arch/debian 9 年用户”,没听说过真说不过去,专而不广吧,适合去大厂,不适合到人人多面手的小作坊。 |
![]() | 25 selca 2023-05-31 09:53:46 +08:00 @privatetan #1 tcp 的包设计本身就是粘着的,tcp 有粘包!! |
![]() | 26 darkengine 2023-05-31 09:54:30 +08:00 粘包辅警来咯,我前端解决过粘包问题 /doge |
![]() | 27 wangpugod2003 2023-05-31 09:55:38 +08:00 碰到问题 3:“你们用什么 linux” 这种低端问题,建议你直接走人。 |
![]() | 28 oceanquake 2023-05-31 09:57:17 +08:00 你作为一个 arch/debian 9 年用户,被用 ubuntu 的趾高气扬面试官鄙视了。 这不怼回去?这不让他明白明白谁才是初级程序员? |
29 Vraw5 2023-05-31 09:57:30 +08:00 也有请 debian 警察入场 |
![]() | 30 tyrone2333 2023-05-31 09:58:24 +08:00 哈哈哈今日乐子又有了 |
![]() | 31 zhengkk 2023-05-31 10:05:57 +08:00 @BeforeTooLate #12 大便 |
![]() | 32 vipdog73 2023-05-31 10:09:22 +08:00 你要说 centos 他会不会也不知道? |
![]() | 33 hhjswf 2023-05-31 10:12:41 +08:00 via Android “哦,我们不用那个,我们用 Ubuntu” 怎么从这句话理解成自己被鄙视了? |
34 mxT52CRuqR6o5 2023-05-31 10:20:25 +08:00 via Android 这面试官不是差点意思,而是差很多意思 感觉这种公司技术岗并不需要啥技术,人际关系处理好了日子就能过的舒服 |
![]() | 35 yolee599 2023-05-31 10:22:54 +08:00 1. 面试官可能没写过代码吧。 2. TCP 是流协议,不存在“粘包”,是应用层协议设计得太烂或者应用层解析器写得太烂了。 3. 面试官估计只用过 Ubuntu ,你问 CentOS 估计他也不知道。 |
![]() | 36 xrzxrzxrz 2023-05-31 10:31:00 +08:00 画风逐渐奇怪 被你们笑死 |
![]() | 37 ArleneCheung 2023-05-31 10:31:14 +08:00 我是搞嵌入式的,本科毕业目前就工作一年。 Ubuntu 是本科学习的时候用的最基础的系统,毕竟开源资料多。 后来去某大厂实习,开始用 Centos 了,那段时间自己搭了个服务器弄了一下 mongodb 集群,开发的时候知道了 debian 。 现在我从事单片机裸板开发,我寻思,你们这个面试官第三个问题就没必要问啊其实......这 Linux 不应该触类旁通嘛?(个人见解,手动狗头) |
![]() | 38 glfpes 2023-05-31 10:32:14 +08:00 @timeromantic 点赞了,我一直都对这些中文互联网名次头皮发麻。 |
![]() | 39 lincanbin 2023-05-31 10:34:43 +08:00 粘包是个伪命题,本质是对 TCP 理解不到位,导致了错误的使用。 有点类似于用手指直接去按饮水机的热水出水口的压板开关,结果被烫到,以为这是一个 bug ,实际上应该用水杯去按这个压板开关。 |
![]() | 40 DOOMS 2023-05-31 10:35:34 +08:00 ![]() ubuntu 不就是 debian 发行版吗,面试官真的用 ubuntu ? 那他就是个小作坊水平,不去也罢 |
42 justlikemaki 2023-05-31 11:31:14 +08:00 这种面试官都能来面试别人,这公司不去也罢 |
![]() | 43 uyZL3221XZ2xGZ3D 2023-05-31 11:34:25 +08:00 本质是八股文面试大行其道 |
44 lloovve 2023-05-31 11:40:57 +08:00 via iPhone 好,那么来了,如何使用 tcp 流,实现数据通讯,从流中解析出想要的数据,这个本质和解决粘包是同一个方法 |
![]() | 45 gefranks 2023-05-31 11:41:04 +08:00 我一直想问粘包到底是个什么概念 |
![]() | 47 id80108900 2023-05-31 11:43:24 +08:00 面试就面试,非他妈要加个『官』字! 以后记得录音录像,凡事留一手。 |
48 missdeer 2023-05-31 11:43:43 +08:00 ![]() 我曾经有几年经常在面试时反鄙视面试官,吵起来的也有,惯的他 |
49 leonshaw 2023-05-31 11:49:27 +08:00 ![]() 为什么 SCTP 没有流行起来? 为什么有无连接、是否可靠、面向流还是包这些几乎正交的特性要耦合起来形成 TCP 和 UDP 两种主流协议? |
50 cyningxu 2023-05-31 11:54:43 +08:00 TCP 是流,包是应用层的概念,所以 TCP 和粘包我理解都不能在一起谈论,这理应是一个应用层如何正确读取流里面的分段数据的问题。 |
51 ovtfkw 2023-05-31 11:54:47 +08:00 via iPhone 黏包到底是啥 谁能解释 |
52 Chieh 2023-05-31 12:11:54 +08:00 就计算机来说,如果查不到一个东西的英文解释,那多半是不存在的 |
54 bfdh 2023-05-31 12:22:00 +08:00 也不知道 tcp“粘包”这个概念是谁提出来的,自己理解不到位,还生造一个概念出来。 |
![]() | 55 liudaolunhuibl 2023-05-31 12:29:48 +08:00 粘包应该是国内面试公众号们拍脑袋发明的,类似的还有 java 的“双亲委派” |
![]() | 56 blackvv666 2023-05-31 12:40:08 +08:00 小孩子才分对错。 成年人只看结果。 |
![]() | 57 zomco 2023-05-31 12:55:35 +08:00 TCP 粘包 是筛选面试官的好问题 |
58 Knuth 2023-05-31 13:10:47 +08:00 via iPhone @timeromantic continue 那应用层该如何正确解决这个问题呢 |
![]() | 59 bk201 2023-05-31 13:19:58 +08:00 如果你确定不去或者去不了,不回怼一下对方吗? |
![]() | 61 hzzhzzdogee 2023-05-31 14:24:02 +08:00 debian: dehbeeuhn |
64 qrobot 2023-05-31 15:41:24 +08:00 |
![]() | 65 ggabc 2023-05-31 16:05:15 +08:00 可能你的工作会顶替这位面试官。所以怎么表现已经不重要了 |
66 hxysnail 2023-05-31 16:40:44 +08:00 @BeforeTooLate #12 以前我们都叫它大便,现在不知道,换了公司用得少了 |
68 xycost233 2023-05-31 17:31:20 +08:00 都已经 3202 年了==怎么还有人问粘包问题啊==建议面试官回去复习一下 TCPIP 协议栈 |
![]() | 69 FakerLeung 2023-05-31 17:56:44 +08:00 @BeforeTooLate 虽然我知道它读“低比恩”,但不妨碍我叫它“大便系统” |
![]() | 70 documentzhangx66 2023-05-31 18:38:01 +08:00 ![]() 正确回答: 1.不应该给 char 赋值 500 。char 的取值范围为 xxxx ,强行给 char 赋值 500 并且在没有参数校验的场景下,程序容易产生意料之外的行为。 2.所谓的 tcp 粘包,是很多年前,一帮非科班的半吊子程序员,没学过网络通信原理,他们试图以 udp 方式进行 tcp 通信,以及使用单线程 tcp 的方式进行多线程甚至多核并发 tcp 通信,才产生了这个问题。目前阶段,请使用诸如 gRPC 这类专业框架,来解决这个问题。 3. Debian + CentOS 。 面试官说自己用 Ubuntu ,你回复说 Ubuntu 有很多小 bug ,比如多年前的某个版本,连 ping 命令都有问题。当热 Debian 也存在自己的问题,比如有些多行脚本不能直接粘贴到 ssh 执行,会出现断行的情况。 |
![]() | 71 zpf124 2023-05-31 19:18:02 +08:00 @BeforeTooLate 迪唉便 -> 带便 -> 大便 |
72 fengye0509 2023-05-31 20:32:06 +08:00 ![]() 面试是双向选择,就这种面试官以后可能是你的领导,你自己看着办吧 |
![]() | 73 nexo 2023-05-31 22:50:33 +08:00 感觉你们是互相被性格排除了 面试面的红脸了属于 |
![]() | 74 Liyuu 2023-06-01 06:12:18 +08:00 会溢出但是不会报错,他是不是没整明白啥是报错 |
75 jzphx 2023-06-01 08:12:37 +08:00 只有 Debian 鄙视 Ubuntu 的,反向操作还是第一次。可能他压根没听说过吧 |
76 mutalisk 2023-06-02 12:18:36 +08:00 这面试官幼儿园水平啊 |
77 istomyang 2023-06-26 17:34:25 +08:00 我:我用 Arch /doge |