zoukankan      html  css  js  c++  java
  • 我的面试库

    算法题

    公司现在的面试对算法要求很高,不妨开个贴,整理一下,弄出几个自己很熟悉又很有代表性的算法题,免得每次都要重新准备。

    参考: http://blog.csdn.net/v_july_v/article/details/6543438


    1. 有1000万条查询字符串记录,找出top 10 出现次数最多查询串。

    用Hash Table 统计查询字符串出现次数,时间复杂度是O(N),详细:http://blog.csdn.net/v_july_v/article/details/6256463

    用size为10的最大堆排序,找出Top 10,时间复杂度为N*logK,。

    关于堆排序:

    http://www.benfrederickson.com/2013/10/10/heap-visualization.html

    http://en.wikipedia.org/wiki/Binary_heap


    2. 对N个整数,寻找最小的K个整数 (例如输入1,2,3,4,5,6,7和8这8个数字,则最小的4个数字为1,2,3和4。)

    用部分排序+堆排序,http://blog.csdn.net/v_JULY_v/article/details/6370650


    3. 设计一个算法,把一个含有N个元素的数组循环右移K位,要求时间复杂度为O(N)

    常规做法,时间复杂度是O(N*K), 用逆排序可以做到O(N)  http://blog.csdn.net/v_JULY_v/article/details/6322882

    对N个元素,用N/2的时间就可以逆排序,空间上只需要一个额外存储。思路是不需要一个一个元素向右移动,只需要将数组的一半和另一半交换即可!

    Reverse(int* arr, int b, int e)
    {
         for(; b < e; b++, e--)
         {
              int temp = arr[e];
              arr[e] = arr[b];
              arr[b] = temp;
         }
    }

    或者

    for(int i=0;i<=N/2;i++)

    {      int t;

            t=a[N-i];

          a[N-i]=a[i];

          a[i]=t;

    }

    设计题

    1. 如果让你设计一个数据库连接池,你将如何设计?



    数据库SQL

    有两张表,学生表 和 学生选课表, 写一条SQL统计所有学生的选课数,注意可能存在一门课程都没有选的情况。

    考察点,left join 和 group by

    完整SQL

    select s.id, sum(case when c.name is not null then 1 else 0 end) from student as s left join course as c on s.id = c.studentId group by s.id


    left join、right join、inner join的区别

    left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 
    right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
    inner join(等值连接) 只返回两个表中联结字段相等的行

    Java题

    1. HashSet HashTable 和 HashMap 的区别

    HashSet实现了Set接口,它不允许集合中有重复的值,要先确保对象重写equals()和hashCode()方法

    HashMap中怎样处理hash冲突的? HashTable 是线程安全的,HashTable不接受null的key和value


    2. web container中加载执行servlet的过程? web.xml中配置,然后init() --> get() / post() --> destroy(),其是不是线程安全的? volatile 这个关键字的作用(对变量进行同步操作)


    3. String和StringBuffer的区别,衍生到immutable class,immutable的好处(线程安全,安全的参数传入,减少内存消耗),如何实现immutable class.


    4. JVM的类加载机制是怎样的? 

      bootstrap classloader load 核心库
                    |
           extension classloader load jre/lib/ext
                    |
           system classloader load -classpath 指定的jar包或类路径

    http://www.blogjava.net/lhulcn618/archive/2006/05/25/48230.html


    5. Java的内存模型? 你碰过几种outOfMemory的错误,都是由什么原因造成的? permgen, heap space, thread stack

    参考 http://www.cnblogs.com/windlaughing/archive/2013/05/27/3101650.html

    设计题

    什么是观察者模式


    架构题

    1. 什么是RESTFul架构

    2. 谈谈你理解的分布式系统架构

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    指针和引用的区别
    vs不自动退出控制台程序的办法
    ads出现村田电容电感无法仿真的问题解决(`BJT1' is an instance of an undefined model `BJTM1')
    解决浏览器跨域的几中方式
    js的事件委托机制
    let和const命令
    JavaScript中闭包的写法和作用详解
    提升HTML5的性能体验系列之五 webview启动速度优化及事件顺序解析
    提升HTML5的性能体验系列之四 使用原生UI
    提升HTML5的性能体验系列之三 流畅下拉刷新和上拉
  • 原文地址:https://www.cnblogs.com/significantfrank/p/4875823.html
Copyright © 2011-2022 走看看