BGM

昨天去一家公司面试,被面试官从技术层面虐翻。谨以此致mark自己的不足。

废话少说,开虐!!!

1, 手写两个超大数相加

注: 两个数的位数超出计算机系统的int值内存范围。

过程:
大体的思路是这样:
1,既然超出int的范围,那么我们用字符串来存储数字。
2,基本的解决思路,按对应位相加,(必须考虑进位)。
3,考虑边界值eg:进位,正负号。

贴一个没有考虑正负号的java代码,大家共勉:
转自一篇博客

public class BigNumSum {public static void main(String[] args) {int[] result = bigNumSum("999999999999999", "99999999999999999");for(int i=0; i < result.length; i++) {System.out.print(result[i]);}}public static int[] bigNumSum(String num1, String num2) {String number1 = num1;String number2 = num2;char[] ch1 = number1.toCharArray();char[] ch2 = number2.toCharArray();int[] sum;int len = Math.abs(ch1.length - ch2.length);boolean flag = false; //为true时表示两数相加>=10if(ch1.length == ch2.length) { //如果两个数的长度相等sum = new int[ch1.length+1]; //相加结果的长度为任一长度+1,因为最高位相加可能>10for(int i=ch1.length-1; i>=0; i--) { //从个位开始相加if(flag) {sum[i+1] = (int)(ch1[i] - '0') + (int)(ch2[i] - '0') + 1;}else {sum[i+1] = (int)(ch1[i] - '0') + (int)(ch2[i] - '0');}flag = handleSumOverTen(sum, i, len); //处理两数相加是否>10}handleTopDigit(flag, sum); //处理最高位return sum;}else if(ch1.length > ch2.length) { //如果数1的长度大于数2的长度sum = new int[ch1.length+1]; //结果的长度为数1的长度+1for(int i=ch2.length-1; i>=0; i--) {if(flag) {sum[i+len+1] = (int)(ch1[i+len] - '0') + (int)(ch2[i] - '0') + 1;}else {sum[i+len+1] = (int)(ch1[i+len] - '0') + (int)(ch2[i] - '0');}flag = handleSumOverTen(sum, i, len);}for(int i=ch1.length-ch2.length-1; i>=0; i--) { //处理数1多出来的位数if(flag) {sum[i+1] = (int)(ch1[i] - '0') + 1;}else {sum[i+1] = (int)(ch1[i] - '0');}flag = handleSumOverTen(sum, i, 0);}handleTopDigit(flag, sum);return sum;}else {sum = new int[ch2.length+1];for(int i=ch1.length-1; i>=0; i--) {if(flag) {sum[i+len+1] = (int)(ch1[i] - '0') + (int)(ch2[i+len] - '0') + 1;}else {sum[i+len+1] = (int)(ch1[i] - '0') + (int)(ch2[i+len] - '0');}flag = handleSumOverTen(sum, i, len);}for(int i=ch2.length-ch1.length-1; i>=0; i--) {if(flag) {sum[i+1] = (int)(ch2[i] - '0') + 1;}else {sum[i+1] = (int)(ch2[i] - '0');}flag = handleSumOverTen(sum, i, 0);}handleTopDigit(flag, sum);return sum;}}/** 处理两数相加是否>10*/public static boolean handleSumOverTen(int[] sum, int i, int len) {boolean flag = false;if(sum[i+len+1] >= 10) {sum[i+len+1] = sum[i+len+1] - 10;flag = true;}else {flag = false;}return flag;}/** 处理最高位*/public static void handleTopDigit(Boolean flag, int[] sum) {if(flag) {sum[0] = 1;}else {sum[0] = 0;}}
}

此题思路我说的对,但是重点考察你的代码,代码0分。

2, iOS 系统键盘和搜狗键盘互相切换的问题

ps: 这个真没有处理过。
先写到这,还有东西要做,回头来更新

面试被虐题— 谨以此致,mark一个悲惨的下午相关推荐

  1. 【面试经典题之字符串】实现一个算法,确定一个字符串的所有字符是否全都不同。假设不允许使用额外的数据结构

    实现一个算法,确定一个字符串的所有字符是否全都不同.假设不允许使用额外的数据结构. 解题: 首先我们假设这个字符串中全都是ASCII字符(如果不是需要另外讨论了).因为ASCII字符集中总共有256个 ...

  2. (面试智力题)每个飞机只有一个油箱,飞机之间可以相互加油(注意是相互,没有加油机)一箱油可供一架飞机绕地球飞半圈。 问题:为使至少一架飞机绕地球一圈回到起飞时的飞机场,至少需要出动几架飞机?

    问题重述 每个飞机只有一个油箱,飞机之间可以相互加油(注意是相互,没有加油机)一箱油可供一架飞机绕地球飞半圈. 问题:为使至少一架飞机绕地球一圈回到起飞时的飞机场,至少需要出动几架飞机?(所有飞机从同 ...

  3. 操作系统中锁的实现(阿里巴巴面试被虐题:cpu是怎么实现锁的)

    在多线程编程中,为了保证数据操作的一致性,操作系统引入了锁机制,用于保证临界区代码的安全.通过锁机制,能够保证在多核多线程环境中,在某一个时间点上,只能有一个线程进入临界区代码,从而保证临界区中操作数 ...

  4. 肝了一个月,我做了个免费的面试刷题网

    大家好,我是鱼皮. 如今找工作.面试实在是太卷了,每轮面试都 必考 八股文,不背不行.网上虽然有很多面试题,但过于分散,就导致很多朋友又不知道到哪去找题.该背哪些题了. 所以我决定做一个完全免费.干净 ...

  5. 肝了两周,我做了一个面试刷题小程序

    大家好,我是poetry.过年放假那段时间没有回去过年,终于有了自己一整块时间做点自己喜欢的事情,大概花了两周时间开发完一个面试刷题小程序的全部功能,今天终于将它上线跟大家见面了. 市面上很多刷题小程 ...

  6. 面试美团,完全实况30+面试真题与答案公布。不得不说细节拉满想要拿到一个大厂offer还真不容易。

    面试美团,完全实况30+面试真题与答案公布.不得不说细节拉满想要拿到一个大厂offer还真不容易. 叮.....美团来电.这次不是外卖而是电话面试. Java 后端开发的. 如果你问我,看了这些题就完 ...

  7. [微软面试100题]61-70

    第六十一题:找出整型数组中两个只出现了一次的数(其余都出现了两遍) 思路:凡是涉及到出现了两次,出现了一次的都用XOR.把所有的数都XOR一遍得到一个数tmp,这个数就是要得到的两个数的XOR.tmp ...

  8. android广告页白屏_年度整理!2056页《大厂安卓岗面试真题解析合集》火爆全网...

    前言 2020年还有最后一个月就结束了,时间一眨眼就过去了.今年面试有没有被面试官虐呢,明年跳槽想跳去哪个大厂呢,这是个问题.说实话,今年我面试也被虐了,为了明年能找到一份心怡的工作,特地的从朋友那里 ...

  9. 史上最强多线程面试44题和答案:线程锁+线程池+线程同步等

    最全BAT必考题答案系列 最全MySQL面试60题和答案 史上最全Spring面试71题与答案 史上最全Redis面试49题(含答案):哨兵+复制+事务+集群+持久化等 分布式缓存Redis+Memc ...

最新文章

  1. pass在python中啥意思_python3中的pass是什么意思
  2. Linux系统集群架构线上项目配置实战(一)
  3. 对话美摄科技侯康:提升技术,拓展场景 美摄智能汽车视频处理方案已就位
  4. PHP exec或system执行linux脚本或可执行文件不成功?权限不够。
  5. vue-router之嵌套路由
  6. 重启计算机可以使用什么组合键,win10系统重启电脑的快捷键是什么呢?
  7. Sentinel简单使用
  8. 猫眼电影爬虫(参考崔大的书写的)
  9. 7个月吐血整理!Android面试相关文章及Github学习资料(标星3.2K)
  10. 泰安中专学校计算机专业,泰安市岱岳区职业中等专业学校
  11. 《痞子衡嵌入式半月刊》 第 56 期
  12. 【postman】postman批量执行接口测试
  13. 服务器怎么修改mac地址怎么办,服务器修改mac地址重启后会恢復原mac吗?
  14. 【Linux进程间通信】二、pipe管道
  15. matlab mri的k空间,理解磁共振K空间,自己动手还原和处理K空间数据
  16. thinkphp5 使用ElasticSearch 做搜索
  17. LAN、WAN、WLAN、VLAN的区别
  18. Swagger UI教程 API 文档神器 搭配Node使用
  19. 码出高效JAVA代码
  20. 数据中心10kv高压配电电气设计的注意事项

热门文章

  1. 【算法】leetcode-838 推多米诺
  2. Python一行代码实现1到100之和
  3. JavaScript用户输入自己的名字,输出写给用户的信件
  4. Fleck WebSocket使用
  5. JS字符(字母)与ASCII码转换
  6. 拉格朗日乘数法 和 KTT条件
  7. QComboBox选项置灰、不可选择、文本颜色(汉字颜色)
  8. linux_ohs安装_weblogic进行管理
  9. 一个超简单的Qt数字按键
  10. 你真的了解TCP/IP吗