算法是学习计算机的基础,更是学习编程必会的内容。在java程序员的面试中,对应聘者基础知识的掌握情况越来越重视,因此java算法面试题是大家在面试前必须要做的准备工作之一,下面整理了10道常考的java算法面试题,都是必会的基础题。

1、初级java排序算法的原理?

答:冒泡排序:重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。

选择排序:在要排序的一组数中,选出最小的一个数与第一个位置的数交换;然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。

插入排序:每步将一个待排序的记录,按其顺序码大小插入到前面已经排序的字序列的合适位置(从后向前找到合适位置后),直到全部插入排序完为止。

希尔排序:先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行依次直接插入排序。

2、解释什么是冒泡排序算法?

答:冒泡排序算法也称为下沉排序。在这种类型的排序中,要排序的列表的相邻元素之间互相比较。如果它们按顺序排列错误,将交换值并以正确的顺序排列,直到最终结果“浮”出水面。

3、什么是复制回收算法?

答:把堆均分成两个大小相同的区域,只使用其中的一个区域,直到该区域消耗完。此时垃圾回收器终端程序的执行,通过遍历把所有活动的对象复制到另一个区域,复制过程中它们是紧挨着布置的,这样也可以达到消除内存碎片的目的。复制结束后程序会继续运行,直到该区域被用完。

但是,这种方法有两个缺陷:对于指定大小的堆,需要两倍大小的内存空间;需要中断正在执行的程序,降低了执行效率。

4、按代回收算法按代回收是为什么?

答:为什么要按代进行回收?这是因为不同对象生命周期不同,每次回收都要遍历所有存活对象,对于整个堆内存进行回收无疑浪费了大量时间,对症下药可以提高垃圾回收的效率。主要思路是:把堆分成若搞个子堆,每个子堆视为一代,算法在运行的过程中优先收集“年幼”的对象,如果某个对象经过多次回收仍然“存活”,就移动到高一级的堆,减少对其扫描次数。

5、解释二分法检索如何工作?

答:在二分法检索中,我们先确定数组的中间位置,然后将要查找的值与数组中间位置的值进行比较,若小于数组中间值,则要查找的值应位于该中间值之前,依此类推,不断缩小查找范围,直至得到最终结果。

6、解释是否可以使用二分法检索链表?

答:由于随机访问在链表中是不可接受的,所以不可能到达O(1)时间的中间元素。因此,对于链表来说,二分法检索是不可以的(对顺序链表或排序后的链表是可以用的)。

7、解释什么是堆排序?

答:堆排序可以看成是选择排序的改进,它可以定义为基于比较的排序算法。它将其输入划分为未排序和排序的区域,通过不断消除最小元素并将其移动到排序区域来收缩未排序区域。

8、解释一个算法的最佳情况和最坏情况之间有什么区别?

答:最佳情况:算法的最佳情况解释为算法执行最佳的数据排列。例如,我们进行二分法检索,如果目标值位于正在搜索的数据中心,则这就是最佳情况,最佳情况时间复杂度为0。

最差情况:给定算法的最差输入参考。例如快速排序,如果选择关键值的子列表的最大或最小元素,则会导致最差情况出现,这将导致时间复杂度快速退化到O(n2)。

9、使用递归算法输出某个目录下所有文件和子目录列表

答:

package com.bjsxt;

import java.io.File;

public class $ {

public static void main(String[] args) {

String path = "D:/301SXT";

test(path);

}

private static void test(String path) {

File f = new File(path);

File[] fs = f.listFiles();

if (fs == null) {

return;

}

for (File file : fs) {

if (file.isFile()) {

System.out.println(file.getPath());

} else {

test(file.getPath());

}

}

}

10、说明一下java排序的基本概念是什么?

答:排序主要分为两类:内部排序和外部排序,java各种排序算法其实指的是内部排序算法。内部排序是基于内存的,整个排序过程都是在内存中完成的,而外部排序指的是由于数据量太大,内存不能完全容纳,排序的时候需要借助外存才能完成(常常是算计着某一部分已经计算过的数据移出内存让另一部分未被计算的数据进入内存)。

算法是学习java编程的基础,因为是否有一个扎实的基本功是面试官衡量是否能胜任java程序员岗位的一个标准,Java算法面试题更是基本功中的基本。当然这些题目肯定不能包含java算法的所有知识点,在java教程中会涵盖所有算法的内容。大家可以通过这10道java算法面试题来自测自己对算法的掌握程度怎么样,及时的查漏补缺。

算法面试java_面试必备——java算法面试题相关推荐

  1. Java算法面试题(007) 蒙提霍尔问题(三门问题)

    简介 此问题本身和算法无关,本质上一个关于概率的问题,在一些高等级的面试也经常被问及,因此收录在Java算法面试题系列中. 三门问题(Monty Hall problem)亦称为蒙提霍尔问题.蒙特霍问 ...

  2. 记一道超级简单的 Java 算法面试题,但无人通过

    点击上方蓝字设为星标 下面开始今天的学习- 作者:方志宏(已获作者授权转载,禁止二次转载) 来源:https://zhuanlan.zhihu.com/p/57859872 这可能是历史上最简单的一道 ...

  3. 最近面试的几个大厂算法面试题汇总

    最近接受了一波社会毒打,几个大厂都经历了好几轮技术面试,面试形式有电话.语音.视频.现场面,内容主要集中在以往工作经历及项目经验.算法知识及理论.算法编程及工程能力.场景案例及分析,好在面试结果比较满 ...

  4. 大厂面试常考的前端算法面试题,建议尽早学会

    前不久一个粉丝和我抱怨:自己去字节面试,准备的特别充分,什么简历.面经刷了好几遍,本以为这次一定没问题,最后却败在了一道算法题上. 确实,现在的大厂招聘要求已经不仅限于技术能力或者做过哪些大型项目了, ...

  5. Github惊现高星神作,两份算法宝典让你横扫大厂算法面试题

    前言 有些小伙伴可能会有疑惑,为什么面试总喜欢问算法与数据结构问题,这是有原因的 首先,算法能看出一个程序员的 基本功 ,数据结构与算法是计算机领域里面最最基础的学科,其他更高级的领域都或多或少都涉及 ...

  6. Java算法面试题:编写一个程序,将e:\neck目录下的所有.java文件复制到e:\jpg目录下,并将原来文件的扩展名从.java改为.jpg...

    package com.swift;import java.io.File; import java.io.FileFilter; import java.io.FileInputStream; im ...

  7. java算法面试题_【干货】经典算法面试题代码实现-Java版

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 面试题3:二维数组中的查找 题目描述:一个二维数组,每一行从左到右递增,每一列从上到下递增.输入一个二维数组和一个整数,判断数组中是否含有整数. publ ...

  8. Java算法面试题 一个顺子带一对

    打牌里面经常出现的5张牌,一个顺子带一对,给你五张牌,比如:1,2,2,2,3 或者 5,6,7,4,4 或者 2,4,3,5,5 或者 7,5,9,6,9 ,这种情况就符合一个顺子带一对,则返回 t ...

  9. 记一道超级简单的算法面试题,90%的人没能完整答出来

    作者:方志宏(已获作者授权转载,禁止二次转载) 来源:https://zhuanlan.zhihu.com/p/57859872 这可能是历史上最简单的一道 Java 算法面试题了. 题目很简单,完成 ...

  10. 2021最新汇总数据结构与算法面试题(准备面试的可以看看)

    闲来无事整理了一下数据结构与算法面试题,准备面试的可以看看. 这份面试题汇总除了Java语言的,我还整理了C++和Golang语言的,无论你是做什么开发这份数据结构与算法面试题汇总都可以看,如果你是做 ...

最新文章

  1. oracl 、mysql在线查看文档
  2. 告别2013,迎接2014
  3. js获取选中文件的后缀名
  4. 启明云端应用分享|基于乐鑫 ESP-WIFI-MESH 的智能自助洗衣房
  5. centos sudo不能运行_Linux操作系统中sudo的使用和sudoers配置
  6. 以前折腾的7zip图标
  7. Sql Server设置用户只能查看并访问特定数据库
  8. TOYOTA SYSTEMS Programming Contest 2021(AtCoder Beginner Contest 228) ABCD
  9. Android Studio 编译输出中文乱码的解决办法
  10. 2008 r2 server sql 中文版补丁_sql2008 sp4补丁
  11. 2018最新私塾在线高级java软件架构师实战培训
  12. (附源码)小程序 平衡膳食小程序 毕业设计 250859
  13. Linux域名IP映射
  14. 高尔顿钉板仿真模拟 MATLAB
  15. 苹果服务器 显示器,苹果M1芯片的Mac可以外接什么显示器 显示器最高支持多少分辨率...
  16. 什么决定了你的职场天花板?
  17. 基于微信小程序的签到系统设计与实现-计算机毕业设计源码+LW文档
  18. (FJWC2020)DTOJ 4688. 迫害 DJ
  19. ZUI易入门Android之Okhttp的相关概念
  20. vue中使用three.js导入外部3D模型

热门文章

  1. A very hard mathematic problem HDU - 4282(二分)
  2. 深入理解vsto,开发word插件的利器
  3. mysql内置函数大全
  4. C++自编图书借阅系统
  5. 路由器与计算机的ip地址,路由器ip地址与mac地址绑定
  6. android好用的窗口小工具下载,股票窗口小工具,安卓股票小插件
  7. python股票交易系统是如何实现自动交易的?
  8. 两个向量的夹角公式_向量的夹角公式!急急急!!!
  9. studioOne安装教程与简单使用(图文)
  10. iHRM 人力资源管理系统--第1章 SAAS-HRM系统概述与搭建环境