原码、反码、补码

是表示有符号整数的三种编码方式,主要用于解决二进制数的符号处理和加减运算问题

原码

定义:最高位为符号位(0 表示正数,1 表示负数),其余位为数值的绝对值

反码

定义:

  • 正数:与原码相同
  • 负数:符号位不变,数值位按位取反

补码

定义:

  • 正数:与原码相同
  • 负数:反码 + 1

二进制和十进制转换

十进制转二进制

整数部分的转换(除 2 取余法)

步骤:

  1. 除 2 取余:将十进制数不断除以 2,记录每次的余数(0 或 1)。
  2. 逆序排列:将所有余数从下往上排列,得到二进制数。

示例:将十进制数 29 转换为二进制

29 ÷ 2 = 14 余 1 ↑
14 ÷ 2 = 7  余 0 ↑
7  ÷ 2 = 3  余 1 ↑
3  ÷ 2 = 1  余 1 ↑
1  ÷ 2 = 0  余 1 ↑

结果:11101(从最后一个余数开始读)

小数部分的转换(乘 2 取整法)

步骤:

  1. 乘 2 取整:将小数部分不断乘以 2,记录每次的整数部分(0 或 1)。
  2. 顺序排列:将所有整数部分从上往下排列,得到二进制小数。

示例:将十进制小数 0.625 转换为二进制

0.625 × 2 = 1.25 → 取整 1,剩余 0.25
0.25  × 2 = 0.5  → 取整 0,剩余 0.5
0.5   × 2 = 1.0  → 取整 1,剩余 0

结果:0.101(按顺序排列)

二进制转十进制

以小数点前面的一位数为 20,往左依次是 21、22 … ,往右依次是 2-1、2-2

行为面试

你的缺点是什么?

过往公司都有比较完善的自动化部署平台和专业的运维岗位,导致对前端部署那块的内容不太熟悉,经验还不足,但是自己在业余时间学习了相关技术并搭建自己的网站

你的优点是什么?

代码质量比较好,过去团队每月会统计需求质量,分析缺陷 bug 情况,我的 bug 数相对最少(需求核对 + 技术方案思考全面 + 代码边界考虑 + 自测充分 + 认真专注)

未来的职业规划是什么?

技术进步 + 承担更重要的职责 + 为公司项目服务

  • 短期:深入掌握前端工程化等等相关的知识点 + 了解和熟悉公司业务 + owner 意识
  • 长期:不断学习前沿技术 + 熟悉 node 等全栈技术 + 深入源码,有更高维度的视角如架构方面改善代码

离职原因?

  • 过去一段业务干了差不多快 3 年,学习了很多,现在是做重复的业务,需要提升。
  • 项目周期紧张,基本上每个需求都是倒排形式,导致经常加班加点,无法兼顾工作和学习。
  • 我所在的岗位虽然暂时没有被裁撤,但因为部门不负责盈利,能明显感觉到职业发展前景变得不明朗。同时,我个人对新行业一直很感兴趣,并且这个行业的前景和发展机会也更符合我的职业期望。

空窗期为何这么久?

想找一个互相都非常适合的公司,能长期稳定发展下去并成长,所以需要相对谨慎地选择

项目的 deadline 很紧张,你该如何做?/ 工作过程中遇到过什么困难?

准备一个工作中具体的例子,使用 STAR 模型讲解,例如:

  • Situation 背景:有一次新的大领导上任,需要加急完成一个项目,遇到过 deadline 很紧张的情况
  • Task 任务:老板下令必须在 5 月底之前上线,我们要按照这个时间往前推,倒排需求
  • Action 行动/解决方案:
    • 和领导沟通,让他帮忙协同其他人力资源(如测试人员),确保所有人都能按计划进行(分批提测)
    • 和项目组开会,明确需求范围,列出功能,划分优先级,明确分工,制定开发计划(砍掉优先级低的不重要的功能点)
    • 大家在一起集中加班开发,即时沟通,即时调整,快速开发完成,并提交测试(每个周末都安排加班)
  • Result 结果:虽然大家很累、进度紧张,但项目最后按计划上线

让你感觉失败的事情

有一个需求花了很长时间需求沟通、评审、核对和排期开发,做完上线后很短时间内需要重新变更功能,感觉花了很多时间和心思写的代码浪费掉了。但是为后面编写代码提供了经验,编写比较有弹性的代码

让你有成就感的事情

  • 接手项目时由于之前这个项目的排期紧张赶工,导致代码功能缺陷数量非常多,但是快速解决完了三百多个问题,保证了项目的平稳运行。
  • 做的是公益平台,24 年某地地震,需要对紧急救灾类别的项目进行功能加班完善,一天上线了几百个相关的救灾项目,无形中帮助了很多灾区的人。

喜欢什么样的团队和领导?

氛围好,大家可以一起成长进步

有什么兴趣爱好?

说几个程序员常见的爱好即可,例如玩游戏、看电影、听歌等。
不要说太影响工作和加班的爱好,如徒步、骑行、长途旅行等。

反问

  • 为什么这个岗位要招人?
  • 这个岗位具体会做哪些事情?技术栈是什么?
  • 结合面试情况,对我有什么建议?