大公司笔试面试都有哪些经典算法题目?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大公司笔试面试都有哪些经典算法题目?相关的知识,希望对你有一定的参考价值。
大公司面试的算法题目多半也是仿照行业经典题库出的,还有的也是结合自己公司业务中的实际情况,用几个特别的案例形式筛选出自己想要的人才。可以去下载一下谷歌微软的经典题库多多复习,还可以到各大公司的论坛贴吧群去看一下笔试和面试经验。
下面简单列举一些经典算法题:
1.判断一个字符串中的字符是否唯一
2.字符串翻转
3.去除字符串中重复字符
4.利用已知函数判断字符串是否为另一字符串的子串
5. 从链表中移除重复结点
6.实现一个算法从一个单链表中返回倒数第n个元素
7. 给定链表中间某结点指针,删除链表中该结点
8.求由两个链表结点组成的数之和
9. 给定一个循环链表,实现一个算法返回这个环的开始结点
10 如何只用一个数组实现三个栈
11. 实现一个栈,要求实现min函数以返回栈中的最小值
12.实现数据结构SetOfStacks来模拟叠盘子
13. 编程解决汉诺塔问题
14.使用两个栈实现一个队列
15. 写程序将一个栈按升序排序
16. 用一个函数判断一棵树是否平衡
17. 设计算法判断有向图两结点间是否存在路径
18. 将递增数组构建成一颗最小高度二叉树
19.将二叉树每一层结点构建成一个链表
20. 查找二叉查找树的任意给定结点的“下一个”结点
21.找出一棵二叉树中两个结点的第一个共同祖先结点
22. 判断一棵二叉树是否为另一棵二叉树的子树
23.输出二叉树中路径上结点值之和为给定值的所有路径
24.写程序使整数N中第i位到第j位的值与整数M中的相同
25.给定一个字符串类型表示的小数,输出其二进制表示
26. 给定一个整数x,找出另外两个二进制表示中1的个数和x相同的数
27.解释以下代码的作用:((n & (n-1)) == 0)
28. 交换一个整数二进制表示中的奇数位和偶数位
29. 写程序找出丢失的整数,要求时间复杂度O(n)
30. 为通用卡牌游戏设计数据结构,并设计子类
我们可以把每一类的题目都细细研究,触类旁通,只有掌握了基础的知识才能慢慢解决复杂问题。
参考技术A1、二维数组中的查找2、替换空格
3、从尾到头打印链表
4、重建二叉树
5、用两个栈实现队列
6、旋转数组的最小数字
7、斐波那契数列
8、跳台阶
9、变态跳台阶
10、矩形覆盖
11、二进制中1的个数
12、数值的整数次方
13、调整数组顺序使奇数位于偶数前面
14、链表中倒数第k个结点
15、反转链表
16、合并两个排序的链表
17、树的子结构18、二叉树的镜像
19、顺时针打印矩阵
20、包含min函数的栈
21、栈的压入、弹出序列
22、从上往下打印二叉树
23、二叉搜索树的后序遍历序列
24、二叉树中和为某一值的路径
25、复杂链表的复制
26、二叉搜索树与双向链表
27、字符串的排列
28、数组中出现次数超过一半的数字
29、最小的K个数
30、连续子数组的最大和
31、整数中1出现的次数(从1到n整数中1出现的次数)
32、把数组排成最小的数
33、丑数
34、第一个只出现一次的字符
35、数组中的逆序对
具体例题:如果一个数字序列逆置之后跟原序列是一样的就称这样的数字序列为回文序列。例如:1, 2, 1, 15, 78, 78, 15 , 112 是回文序列, 1, 2, 2, 15, 78, 87, 51 ,112, 2, 11 不是回文序列。现在给出一个数字序列,允许使用一种转换操作:选择任意两个相邻的数,然后从序列移除这两个数,并用这两个数字的和插入到这两个数之前的位置(只插入一个和)。现在对于所给序列要求出最少需要多少次操作可以将其变成回文序列?
java第一次笔试+面试总结
今天是自己第一次java笔试和面试,总体感觉比预期好一点。
笔试题第一面是问答题,主要考查java基础,一共有18题,我有6道题没有写出来。第二面主要是算法题,一共有8道题,我大概写出来4道题,第三面主要是逻辑题和涉及http,
操作系统的一些题目,我做的太慢了,根本就没做到哈哈哈哈。
下面整理一下10道不会的题目,希望以后继续加油啦!
1.持久层设计要考虑哪些问题?你用过的持久层框架有哪些?
答:”持久“就是将数据保存到可掉电式存储设备中以便以后使用。简单来说,就是将内存中的数据保存到关系型数据库、文件系统、消息队列等提供持久化支持的设备中。持久
层就是专注于实现数据持久化的相对独立的层面。
持久层设计的目标包括:
一数据存诸逻辑的分离,提供抽象化的数据访问接口
一数据访问底层实现的分离,可以在不修改代码的情况下切换底层实现
一资源管理和调度的分离,在数据访问层实现统一的资源调度(如缓存机制)
一数据抽象,提供更面向对象的数据操作
持久层框架有”Hibernate Mybatis ,Toplink, Guzz,jOOQ,Spring Data, .ActiveJDBC。
2、什么是IOC和DI ? DI是如何实现的?
答:I0C叫控制反转,是Inversion of Control的缩写, DL (Depedency Injection)叫依赖注入,是对IOC更简单的诠释。控制反转是把传统上由程序代码直接操控的对象的调用权交
给容器,由容器来创建并管理对象之间的依赖关系。依赖注入的基本原则是应用组件不应该负责查找资源或者其他低赖的协作作象。配置对象的工作应该由容器负责,查找资源的
逻辑应该从应用组件的代码中抽取出来交给容器完成。(由容器动态的将某种依赖关系注入到组件之中)。
依赖注入通过setter 方法注入、构造器注入,接口注入,Spring支持setter注入和构造器注入,用构造器注入必须的赖关系,setter注入可选的依赖关系,setter注入需要类提供无
参构造器或者无参的静态工厂方法来创建对象。
3、解释一下什么叫AOP(面向切面编程)?
答:AOP是一种程度设计范型,该范型以一种称为切面(aspect)的语言构造为基础,切面是一种新的模块化机制,用来描述分散在对象、类或方法中的横切关注点,在运行时,动
态的将代码切入到类的指定方法、指定位置上的编程思想。
4.快速排序中如何选择界值(即基准点)会更有效率?
答:一般选择第一个位置是错误的,因为如果输入是预排序的或反序的,则是个劣质的分割;
一种安全的选法是随机选取“基准”,但随机数的生成一般是昂贵的;
三数中值分割法:“基准”的最好选择是中数.但是中数很难算出,且会减慢排序的速度,我们可以将左端、右端和中心位置上的三个元素的中值作为基准。
5、谈谈对数据库索引的理解?
答:索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访向数据库表中的特定信息。建立索引的目的是加快对表中记录的查找或排序,但也有缺点:
(1)增加了数据库的存储空间
(2)在插入和修改数据时索引也要随之变动
6、如何查询一个表中的第4到8行数据?
答:Limt: (第1个参数是起始置,第2个参数是记录总数)
(1)一个参数: select * fpom table LIMIT 5 ;检查前5行
(2)两个参数:selet * from table LIMIT 5,10
检索第6到15行 (注意5是6,第10行是15 不是16)
(3).参数中有-1 : select * from table LIMIT 95,-1
检索第96行到最后一行
7、如何编写一个用户注册接口?
答案见链接:https://www.cnblogs.com/iceywu/p/11873457.html
8. Cookie 和session的作用是什么?有什么区别?
答:二者都是会话技术,为保存用户状态,解决http无状态问题,用户第一次访问服务器时,服生器端会生成并返回一个cookie,当用户再次访问服务器端时,带着自己的cookie
发送给服务器端,服务器端与自己的cookie列表进行比救,成功则返回用户信息。
用户在访问多个页面时需要保寸登录消息,我们在服务器端开辟一个空间来保存这些消息,即session技术。当服务器端第一次返回cookie时,cookie键值对的键即为sesionID.值
为ID ,当用户再发送cookie时,服务器端即根据sessionID来取得消息,所以session是实现在cookie基础上的。
区别:
(1) Cookie 运行于客户端, session运行于服务器端
(2)Cookie 有大小限制以及浏览器中cookie个数也有限制,session没有大小限制,和服务器内存有关。
(3) Cookie有安全隐患,通过拦截或本地文件得到cookie后进行改击
(4) Session保存在服务器端,会存在一段时间才消失。
9.想恰好购买n个苹果,有6个一袋和8个一袋,且购买尽量少的袋数,如何购买?
答案见链接:https://www.cnblogs.com/iceywu/p/11862554.html
10:常见的排序算法有哪些?代码如何实现?
答案见链接:https://www.cnblogs.com/iceywu/p/11862550.html
以上是关于大公司笔试面试都有哪些经典算法题目?的主要内容,如果未能解决你的问题,请参考以下文章