Java面试之数据结构& 算法& 计算机基础

Java面试之数据结构& 算法& 计算机基础Java面试之数据结构& 算法& 计算机基础

大家好,又见面了,我是你们的朋友全栈君。

1、一个byte 几个单位?【基础】

答:8bit。

2、常用UNIX 命令(Linux 的常用命令)(至少10 个)【基础】

答:ls pwd mkdir rm cp mv cd ps ftp telnet ping env more echo

3、后序遍历下列二叉树,访问结点的顺序是?【基础】

A
/ \
B C
/ \ \
D E F
/ / \
G N I
/ \
J K

答:顺序为:DJGEBKNIFCA 。

4、排序都有哪几种方法?请列举。用JAVA 实现一个快速排序。【基础】

答:排序的方法有:插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、快速排序),选择排序(直接选择排序、堆排序),归并排序,分配排序(箱排序、基数排序);快速排序的伪代码:
//使用快速排序方法对a[ 0 :n- 1 ]排序
从a[ 0 :n- 1 ]中选择一个元素作为middle,该元素为支点;
把余下的元素分割为两段left 和right,使得left 中的元素都小于等于支点,
而right 中的元素都大于等于支点;
递归地使用快速排序方法对left 进行排序;
递归地使用快速排序方法对right 进行排序;
所得结果为left + middle + right。

5、写一种常见排序。【基础】

答:C++中冒泡排序:

void swap( int& a, int& b ){
int c=a; a = b; b = c;
}
void bubble( int* p, int len ){
bool bSwapped;
do {
bSwapped = false;
for( int i=1; i<len; i++ ){
if( p[i-1]>p[i] ){
swap( p[i-1], p[i] );
bSwapped = true;
}
}
}while( bSwapped );
}

6、写一个一小段程序检查数字是否为质数;以上的程序你采用的哪种语言写的?采用该种语言的理由是什么?【基础】

答:代码如下:

#include <math.h>
bool prime( int n ){
if(n<=0) exit(0);
for( int i=2; i<=n; i++ )
for( int j=2; j<=sqrt(i); j++)
if((n%j==0) && (j!=n))
return false;
return true;
}

采用C++,因为其运行效率高。

7、编程题:设有n个人依围成一圈,从第1个人开始报数,数到第m个人出列,然后从出列的下一个人开始报数,数到第m个人又出列,…,如此反复到所有的人全部出列为止。设n个人的编号分别为1,2,…,n,打印出出列的顺序;要求用java 实现。【中等难度】

答:代码如下:

package test;
public class CountGame {
private static boolean same(int[] p,int l,int n){
for(int i=0;i<l;i++){
if(p[i]==n){
return true;
}
}
return false;
}
public static void play(int playerNum, int step){
int[] p=new int[playerNum];
int counter = 1;
while(true){
if(counter > playerNum*step){
break;
}
for(int i=1;i<playerNum+1;i++){
while(true){
if(same(p,playerNum,i)==false) break;
else i=i+1;
}
if(i > playerNum)break;
if(counter%step==0){
System.out.print(i + " ");
p[counter/step-1]=i;
}
counter+=1;
}
}
System.out.println();
}
public static void main(String[] args) {
play(10, 7);
}
}

8、写一个方法1000 的阶乘。【较难】

答:C++的代码实现如下:

#include <iostream>
#include <iomanip>
#include <vector>
using namespace std;
class longint {
private:
vector<int> iv;
public:
longint(void) { iv.push_back(1); }
longint& multiply(const int &);
friend ostream& operator<<(ostream &, const longint &);
};
ostream& operator<<(ostream &os, const longint &v) {
vector<int>::const_reverse_iterator iv_iter = v.iv.rbegin();
os << *iv_iter++;
for ( ; iv_iter < v.iv.rend(); ++iv_iter) {
os << setfill('0') << setw(4) << *iv_iter;
}
return os;
}
longint& longint::multiply(const int &rv) {
vector<int>::iterator iv_iter = iv.begin();
int overflow = 0, product = 0;
for ( ; iv_iter < iv.end(); ++iv_iter) {
product = (*iv_iter) * rv;
product += overflow;
overflow = 0;
if (product > 10000) {
overflow = product / 10000;
product -= overflow * 10000;
}
iv_iter = product;
}
if (0 != overflow) {
iv.push_back(overflow);
}
return *this;
}
int main(int argc, char **argv) {
longint result;
int l = 0;
if(argc==1){
cout << "like: multiply 1000" << endl;
exit(0);
}
sscanf(argv[1], "%d", &l);
for (int i = 2; i <= l; ++i) {
result.multiply(i);
}
cout << result << endl;
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/106569.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 仙之侠道二九章怎么开青门_仙之侠道2玖章全面攻略

    仙之侠道二九章怎么开青门_仙之侠道2玖章全面攻略仙之侠道这一系列的图小编也玩了好几年了(初章一直到现在的六章)。都是单机或者找两个朋友玩的。六章任务中前期推荐做:可以得衣服,得钱的任务,例如:狼皮任务,包包果,巨虾甲任务,古币以及挖蘑菇(牛洞的走法下面有介绍)等。这一系列图前期的等级以及衣服是最最重要的。当然挑战系列不要忘了前期有个移动最大化的鞋子,特别实用。紧急的书信这是游戏中最简单的一个任务了,只要去找NPC接了任务拿了信,再送去南诏就可…

    2022年10月22日
  • openwrt旁路由 ipv6上网配置[通俗易懂]

    openwrt旁路由 ipv6上网配置[通俗易懂]openwrt旁路由ipv6上网配置路由器:小米AX3600旁路由:openwrt配置路由端配置上网方式选择:路由器拨号选Native,光猫拨号选NAT6,校园网一般选NAT6打开成功后,上网信息会显示ipv6信息软路由配置DHCP/DNS配置:网络-接口配置:测试IPv6测试…

  • 征途服务器架设_征途sf架设服务器的基本条件

    征途服务器架设_征途sf架设服务器的基本条件2、设置系统自动启动防火墙vi/etc/rc.d/rc.local增加一行/etc/rc.d/forward保存后退出3、设置文件打开数1)修改/etc/security/limits.conf增加2行:*   soft  nofile 4096*   hard  nofile 655352)修改/etc/pam.d/login增加1行sessionrequired pam_limit…

  • Java使用SFTP和FTP两种连接服务器的方式实现对文件的上传下载

    Java使用SFTP和FTP两种连接服务器的方式实现对文件的上传下载

  • ubuntu20.04内核降级_ubuntu20更新内核

    ubuntu20.04内核降级_ubuntu20更新内核Ubuntu20.04如何降低内核版本?如题,在不小心安装新内核之后,发现没办法降级(网上的各种方法最后结合信息摸索出了解决方案:首先,查看自己的grub版本:grub-install–version记住(GRUB)之后的大版本是2.00以后还是2.00以前查看自己现有的内核版本(完全版)grep’menuentry’/boot/grub/grub.cfg找到自己想换回的内核例如,这里我想要更换为5.8.0-50,就找到对应的选项,有menuentry’U

  • 项目范围管理:项目范围管理的概念是什么_项目范围管理规划案例

    项目范围管理:项目范围管理的概念是什么_项目范围管理规划案例项目范围管理包括确保项目做且只做所需的全部工作,以成功完成项目的各个过程。 项目范围管理关注的焦点是:什么是包括在项目之内的,什么是不包括在项目之内的,即为项目工作明确划定边界。 对项目范围管理和控制的有效性,是衡量项目是否达到成功的一个必要标准,项目范围的管理不仅仅是项目整体管理的一个主要部分,同时在项目中不断地重申项目工作范围,有利于项目不偏离轨道,是项目中实施控制管理的一个主要手段。 项目范围是项目其他各方面管理的基础。如果范围都弄不清楚,成本、进度和质量等就无从谈起。确认项目范围对项目管理有如

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号