关于面试的小技巧


** 回答问题的套路
1 知无不言,言无不尽
2 对待面试题 尽量有一个递进式的回答
3 面对理论性的对比,从大往小了说 概述->细节
 
*问题1: 如何求两个int型的平均数
思考: int型对数的限制 如果是两个足够大并且相同符号的数的话 相加后会超出int型范围
      所以考虑一个算法,让很大的数相加也不会超出限定值。
      但是如果两个数异号即使很大相加也不会超出范围 所以用正常办法
编写代码; 1 判断两个数的符号是否相等(用异或^ 的办法去判断符号位,相同为0,不同为1)
          2 如果符号相同则:min+(max-min)/2;
          3 如果符号不同则:(max+min)/2;
*问题2: 如何在很多数中找到中位数
思考: 当在数据很多的时候按照正常做法排序,然后去找中位数效率会大大降低
      所以在考虑到数据很多的时候则: 1 将数据转化成2进制
                                    2 如果有正有负那么中位数一定在多的数据里
                                    3 所以从符号位判断0多还是1多 然后去掉少的那部分
                                    4 依次判断知道数据量较小时可以用排序然后寻找中位数的方法做
*问题3: 设计一个一百亿计算器
思考: 首先要明白这道题目的考查点是什么
      要知道加减法的位运算原理和知道计算机中的算术运算会发生越界的情况
      所以要用到java中BigInteger(专门用于数很大时候的计算)
      可以参看jdk中自带的java.math.BigInteger类的源码
====================================================================================================
关于问题的总结:
    面对简单的问题要留心,要尽可能的考虑周全,尽量的考虑到多种情况,考虑到数据量很大时的情况。
    感觉一般运算的问题,转化成2进制去思考,可能会更好的解决问题。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值