我的面试库

简介: 算法题 公司现在的面试对算法要求很高,不妨开个贴,整理一下,弄出几个自己很熟悉又很有代表性的算法题,免得每次都要重新准备。 参考: http://blog.csdn.net/v_july_v/article/details/6543438 1. 有1000万条查询字符串记录,找出top 10 出现次数最多查询串。 用Hash Table 统计查询字符串出现次数,时间复杂度是O(

算法题

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

参考: 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. 谈谈你理解的分布式系统架构

目录
相关文章
|
JSON 缓存 前端开发
基于Axios二次封装请求库,带你重构面试亮点(一)
基于Axios二次封装请求库,带你重构面试亮点
108 0
|
7月前
|
架构师 数据挖掘 Python
最全pandas库(Python),2024年最新阿里云架构师面试
最全pandas库(Python),2024年最新阿里云架构师面试
最全pandas库(Python),2024年最新阿里云架构师面试
|
7月前
|
机器学习/深度学习 算法 前端开发
2024年8个可以提高数据科学工作效率并节省宝贵时间的Python库,2024年最新记得把每一次面试当做经验积累
2024年8个可以提高数据科学工作效率并节省宝贵时间的Python库,2024年最新记得把每一次面试当做经验积累
2024年8个可以提高数据科学工作效率并节省宝贵时间的Python库,2024年最新记得把每一次面试当做经验积累
|
7月前
|
缓存 自然语言处理 数据处理
Python自然语言处理面试:NLTK、SpaCy与Hugging Face库详解
【4月更文挑战第16天】本文介绍了Python NLP面试中NLTK、SpaCy和Hugging Face库的常见问题和易错点。通过示例代码展示了如何进行分词、词性标注、命名实体识别、相似度计算、依存关系分析、文本分类及预训练模型调用等任务。重点强调了理解库功能、预处理、模型选择、性能优化和模型解释性的重要性,帮助面试者提升NLP技术展示。
117 5
|
存储 JavaScript 前端开发
前端面试宝典库
前端面试宝典库
|
7月前
|
JSON 数据格式 开发者
Python标准库知识问答:面试必备
【4月更文挑战第14天】本文探讨了Python标准库的重要性,并概述了核心模块,如os、sys、datetime等。强调了面试中常见的问题和易错点,例如os模块的文件操作竞态条件、datetime格式化错误、collections.defaultdict误用、json序列化陷阱和logging配置误区。建议通过理解模块功能、避免易错点和实践最佳做法来提升面试表现。
69 0
|
消息中间件 设计模式 分布式计算
大厂招聘重点全在这!GitHub置顶Java基础-高级面试库+自学路线
最近几年经常会听见这样一种声音:“程序员是吃青春饭的,年龄一大就不吃香了”,在当下这种互联网产业增速放缓,甚至隐约展现出疲态的时刻,此类言论就很有市场。
|
缓存 API
基于Axios二次封装请求库,带你重构面试亮点(二)
基于Axios二次封装请求库,带你重构面试亮点
67 0
源于《剑指offer》经典面试题---库函数atoi如何使用及模拟实现
要求如果遇到空格,则根据需要丢弃可能多的空格字符,直到找到第一个非空字符。
91 0
|
前端开发 芯片
【数字设计】哲库科技_2023届_笔试面试题目分享
【数字设计】哲库科技_2023届_笔试面试题目分享
【数字设计】哲库科技_2023届_笔试面试题目分享

热门文章

最新文章