原码、反码、补码
是表示有符号整数的三种编码方式,主要用于解决二进制数的符号处理和加减运算问题
原码
定义:最高位为符号位(0 表示正数,1 表示负数),其余位为数值的绝对值
反码
定义:
- 正数:与原码相同
- 负数:符号位不变,数值位按位取反
补码
定义:
- 正数:与原码相同
- 负数:反码 + 1
二进制和十进制转换
十进制转二进制
整数部分的转换(除 2 取余法)
步骤:
- 除 2 取余:将十进制数不断除以 2,记录每次的余数(0 或 1)。
- 逆序排列:将所有余数从下往上排列,得到二进制数。
示例:将十进制数 29 转换为二进制
29 ÷ 2 = 14 余 1 ↑
14 ÷ 2 = 7 余 0 ↑
7 ÷ 2 = 3 余 1 ↑
3 ÷ 2 = 1 余 1 ↑
1 ÷ 2 = 0 余 1 ↑
结果:11101(从最后一个余数开始读)
小数部分的转换(乘 2 取整法)
步骤:
- 乘 2 取整:将小数部分不断乘以 2,记录每次的整数部分(0 或 1)。
- 顺序排列:将所有整数部分从上往下排列,得到二进制小数。
示例:将十进制小数 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 年某地地震,需要对紧急救灾类别的项目进行功能加班完善,一天上线了几百个相关的救灾项目,无形中帮助了很多灾区的人。
喜欢什么样的团队和领导?
氛围好,大家可以一起成长进步
有什么兴趣爱好?
说几个程序员常见的爱好即可,例如玩游戏、看电影、听歌等。
不要说太影响工作和加班的爱好,如徒步、骑行、长途旅行等。
反问
- 为什么这个岗位要招人?
- 这个岗位具体会做哪些事情?技术栈是什么?
- 结合面试情况,对我有什么建议?