最近快到了程序员, 任职跳槽的高峰期, 笔者我送上一份 Java 程序员面试经常会遇到的五大类问题, 每一类都有举例分析, 希望能给大家带来帮助.
一, 数组排序问题:
冒泡排序算法
冒泡排序算法的一趟原理如下:
相邻元素进行两两比较, 如果前者大于后者, 则交换, 否则不变.
每一趟依次向后进行第 1 步, 直到最后一个元素.
经过一趟的依次比较后的结果是, 最后一个数是本趟比较中最大的数. 所谓大数 "沉入水底" , 轻的气泡 "向上冒泡".
继续重复 1,2,3 步骤. 每趟只比较到上一步剩下的部分即可 (除去最后的已经 "沉到底部" 的元素).
详细步骤如下:
具体代码如下:
二, 数组相关其他问题:
如何把数组中的元素逆序?
思路: 逆序就是把数组的元素前后倒置.
我们可以把前后两个数 i 和 arr.length-1-i 位置上的数进行交换, 但是一定注意交换次数是长度的一半.
举例如下:
三, 查找问题:
顺序查找法
给定数字, 在数组中查找所在的下标, 没有找到则返回 -1.
思路: 顺序查找是按照序列原有顺序对数组进行遍历比较查询的基本查找算法, 只需要按数组下标索引一次对比即可.
根据题目要求找不到返回 - 1, 所以可以假设找不到, 设置变量标志位 int index = -1. 然后依次查找, 找到则替换标志为位置索引. index = i.
四, 进制转换问题:
把一个十进制转换为八进制
思路: 十进制转为其他数的方式就是整除取余数的方法. 每次循环整除 8 取余数, 直到除到 0 为止.
五, 日期问题:
输入年份, 月份, 日期, 打印出当前月份的日历表
思路关键点: 本题的关键点就是需要控制换行和每月天数问题.
先设置当月 1 日, 然后计算出 1 日是星期几, 这样可以确定 1 号在周几的开始位置;
控制每周日换行或每 7 天换行, 但是注意第一周需要调整开始数.
最后, 对于想学习编程, 成为高薪资的程序员一员的小伙伴来说: 学习从来不是一个人的事情, 要有个相互监督的伙伴, 工作需要学习 C/C++ 或者为了入行, 转行学习 C/C++ 的伙伴可以一起学习哦! 我自己组建了一个编程交流群 (见简介), 如果有兴趣的同学可以进群, 还可以领取一些关于 c/c++ 的项目学习视频资料! 不管你是大牛还是小白, 大家都一起成长进步.
来源: http://www.jianshu.com/p/8d37e3baeab4