关于面试的道与术

  内外功兼修、实力与技巧并举、解决恼人的面试题
 基本原则:  举例+画图

(1)java类题:
  问题: count += count++;能不能编译通过,这个执行结果是什么
      或者

     try{
           System.exit();
         }finally{
           System.out.println();
         } 

这段代码里两行,哪行先执行

  1. 平时我写项目写得比较多,很少用这种写法
  2. 如果让我试的话,我试一下,我会深入了解一下 深入java虚拟机,给我一点时间,我会解决
   第2句也可以换为: 如果让我试的话,我会试一下,先打一个断点,debug模式下看哪个先执行
(2)js题:
 问题: 用js写一个飘浮窗口
 答:平时写js代码,都是把别人的代码拿过来,改一改。如果给我一点时间,我写这个肯定可以,没有问题

(3)思维题
生小牛问题: 一个农场有一头母牛,它每年都会生一头母牛(这里是假设生出来的全部是母牛),
 每一头小母牛4岁后每年生一头小母牛,而且无死亡,无损伤失踪,问20年以后,农场有多少头牛
分析: 这样的问题,听上去有点难度,如果思路不对,一天也写不出来
      这道题实际上是一道递归题,肯定要用到循环

答:首先写思路,写一些注释,定义一些变量出来,如牛的数量,牛的年龄,农场的经营年数
    如果连思路都没有,那就先定义一个类: 牛,它有一个属性年龄,一个类: 农场,
     它里面有一个List记录牛的数量,  然后在主方法中写算法,可以尝试写一些循环

public class Cow{
   int count=1;
   public void calculate(int y){
      if(y-3<0){
         count = 1; 
      }else{
         for(i=0;i<(y-3)/4+1;i++){
            count*=2;
         }
      System.out.println(y+"年后母牛数量为:"+count+"头");
      }
   }
   public static void main(String[] args){
      Cow c = new Cow();
      c.calculate(10);//这个地方的10就是你需要输入的年份
   }
}

另外一种简易写法:

public class Cow {
     //n年后有多少牛
    public void method(int n){
       int zero=0;//零岁的牛头数
       int one=1;//1岁牛
       int two=0;//2岁牛
       int three=0;//3岁牛
       int other=0;//大于3岁牛
       int born=0;//刚出生牛
       for(int i=1;i<=n;i++){//随着时间的增长小牛的年龄也在变化
         born=other; 
         other+=three;
         three=two;
         two=one;
         one=zero;
         zero=born;
       }
       System.out.println("总的牛数量:"+(zero+one+two+three+other));
    }
    public static void main(String[] args){
       Cow p=new Cow();
       p.method(10);//10为输入的年份
    }
}

(4) 算法题
 java算法题: 通常有7种排序算法:冒择入希快归堆:冒泡,选择,插入,希尔,快速,归并,堆排序
(5) 背记题
  问题: 写出JSP常见的内置对象,以及该对象的常用方法
   答:能背记住最好

(6) 优化题
  关于数据库优化(涉及索引、缓存、SQL优化、分表)
  答: 提到优化,  首先想到的是缓存,举例:在我的数据库里记录着我们所有部门的信息,我们一个大集团MicroSoft, 每个人

登陆都用OA,只要OA一启动,或者有一个人登陆,就把所有部门的信息读到内存里,
将来有人再用直接从内存中拿,效率当然就高,但是同时这里也会有问题,如果数据库更新,缓存也要跟着更新.
  第二个想到就是索引,数据库里要有索引,Lucene里也有索引
  
   优化最先想的就是: 缓存 + 索引

(7) 无聊题
   问题: 一个字符串,把java 替换成C++
   分析: 面试官是想让你了解字符串的算法,如果就简单用replace()当然可以,但是要这样想,一定要体现出自己的水平,
       还有这是不是面试官想要的
   答:这个问题,有三种解决方法
        第一种方法:  调用replace()方法
        第二种方法:  使用正则表达式,进行替换(间接向面试官透露出, 我还会正则表达式)
        第三种方法:  (这是面试官真想要的)把java一个字符一个字符分别处理,把整个字符串转成一个字符数组,
                    然后写一堆代码上去,(写自己的代码,让面试官头疼去吧)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值