星宸科技
一面
时间:2024-9-13 14:00
- 自我介绍
- 实习项目的背景
- 实习项目用到的数据结构
- 实习是用c++还是c多
- http服务器实现了哪些功能
- 异步日志模块的实现
- c++20协程
- 智力题:给一个六分钟和八分钟的沙漏,怎么计时10min。
- vector和list的区别
- map,自定义的类,怎么作为map的key(回答可以特例化std::less)(其实更简单的是重载operator <)
- 设计模式是什么?用到哪个?
- 怎么用c语言实现面向对象
- 反问:工作内容
二面
时间:2024-9-24 11:00
全是开放性问题,问怎么设计嵌入式系统,怎么用最低的成本满足功能,等等。(一个都答不出)
对于加班,以及工作中的问题如何处理(加班半夜回家途中被召回。我回答说有怨气)。(学到一些话术了,还是不错的)
两个智力题:
1、25匹马,5个赛道,最少跑多少次能找出跑的最快的三匹马?(答的11,面试官说不对)
gpt答案:
要找出最快的三匹马,最少需要进行以下步骤:
- 初步分组:将25匹马分成5组,每组5匹马。每组在一个赛道上比赛,找出每组的第一名。这样需要进行5次比赛。
- 决赛:将5组的第一名进行比赛,以确定这5匹马中最快的马。这样需要进行1次比赛。到此为止,我们已经进行了6次比赛,并找到了最快的马。
- 确定前3名马匹:接下来,我们需要找出第二快和第三快的马。我们知道:第一名马的起始组的所有其他马只能是2、3名马的候选者。第二名马的组中的马也是候选者。第三名马的组中仅有一匹马是候选者(即第一名马的组中的第二名)。具体来说,我们需要考虑:第一名马的组中的第二名和第三名马(共2匹)。第二名马的组中的第一名和第二名马(共2匹)。第三名马的组中的第一名马(共1匹)。综上所述,我们有总共5匹马需要比较:第一名马的组中的第2、第3名,第二名马的组中的第1、第2名,第三名马的组中的第1名。
- 最后一次比赛:对这5匹马进行一次比赛,找出其中的前两名马(加上之前的第一名马),这样就能确定最快三匹马。
因此,总共的比赛次数为:5(初步分组) + 1(决赛) + 1(最终确认前3名) = 7次比赛。
最少需要7次比赛才能确定最快的三匹马。
2、一个西瓜,可以切9刀,最多能切多少块,最少能切多少块?(答的10和30,面试官说不对)
gpt答案:
对于一个西瓜,切9刀时,可以得到的块数的最大和最小值分别如下:
最大块数
每一刀都要尽量与之前的刀相交,以获得更多的块。切的方式可以保证每一刀都切穿所有之前切出的部分。理论上,切出的块数可以用以下公式计算:
最大块数=n(n+1)/2+1。其中 n 是刀的数量。
对于9刀:最大块数=9*(9+1) / 2+1=9×102+1=45+1=46
因此, 最多能切成46块。
最小块数
如果每一刀仅仅是切分,而不与之前的刀交叉,那么每一刀只会将西瓜切成两部分。因此,9刀的情况下,至少会有:
最小块数=n+1最小块数=n+1
对于9刀:
最小块数=9+1=10最小块数=9+1=10
因此, 最少能切成10块。
综上所述:
- 最多切成46块
- 最少切成10块