乐信圣文笔试题

乐信圣文笔试题

题型:牛客笔试链接,8道问答题

1、5进制的1023转换为10进制是多少?转换为7进制是多少?

计算过程:

1023(5) => 15^3 + 0 + 25^1 + 3*5^0 = 125+10+3= 138(10)

138(10) => 138/7= 19...5 19/7 = 2....5 2/7=0.....2

255(7) = 51+57+2*49= 40+98= 138(10)

答:5进制的1023转换为10进制是138。转换为7进制是255。

2、比较四种排序算法的时间复杂度,空间复杂度,稳定性,适用场景

不会,胡写的。

3、进程和线程的概念?它们的区别有哪些?

进程:是操作系统分配资源的最小单位。进程可以类比为工厂,其中包含地址空间和资源和执行任务的线程。

线程:是操作系统中执行CPU调度的最小单位。线程可以类比为工人,它可以使用进程内的资源和地址空间,负责执行进程分配的任务。

区别:

1、进程是完整的一套程序,包含自己的地址空间和资源。而线程是进程的一部分,一个进程可以有多个线程,并且这些线程共享进程的相关资源。

2、进程间隔离性强,并发安全,进程A崩溃不会影响进程B。而线程由于共享进程资源,所以进程A内的线程a崩溃会导致线程b也崩溃,所以存在并发不安全的问题。

3、进程间通信需要依赖管道、信号量、信号、消息队列、共享内存等机制。而线程间通信由于共享进程资源,所以较为容易。

4、内存泄漏和垃圾回收的概念?常用垃圾回收方法有哪些?

内存泄漏:

内存泄漏是指当java中某些对象或资源已不再被使用,但始终不被回收,造成资源持续消耗浪费的现象。

垃圾回收:

垃圾回收是指java中当某些对象、变量等资源不再被使用时,由垃圾回收器自动地对相关资源进行回收的过程。

常用垃圾回收方法:

1、标记-清除算法

2、标记-整理算法

3、分代回收算法

4、复制算法

5、分辨率为1024x1024的RGBA32格式图片的内存占用多少字节?

不会,胡写的。

6、基于int数组实现动态扩容循环队列

题目给定模块,可以根据需要添加变量和方法。

public class CircularQueue {
    private  int[]  _data;
    
    public void  Enqueue(int  value) {
        
        //todo
    }
    
    public void  Dequeue(int  value) {
		//todo
    }
    
    
    
    

不太会,我的解答:

public class CircularQueue {

​      // 基于int数组实现的动态扩容循环队列

​      

​      private  int[]  _data;

​      private size;

​      // 当前队列包含元素个数

​      public void  Enqueue(int  value) {

​          

​          if( size == _data.length ) {

​              // 队列已满

​              

​              int[] new_data = new int[ _data.length*2 ];

​              for( int i=0; i < _data.length; i++ ) {

​                  new_data[i] = _data[i];

​              } 

​              new_data[ _data.length ] = value;

​              _data = new_data;

​          } else {

​              // 队列未满

​             

​              _data[ size ] = value;

​          }

​      }

​      public void  Dequeue(int  value) {

​          for( int i=1; _data[ i ] != null; i++ ) {

​                _data[i-1] = _data[i];          

​          } 

​      }

}

7、判断密码是否合法

题目(1):密钥合法要求:

1、仅包含小写字母,大写字母,数字。

2、至少包含两种字符。

3、最小长度为8。

4、最大长度为16。

编写代码,判断密钥是否合法

题目(2):给了三个测试用例示例,编写测试用例

我的答案如下

1、代码编写(java语言)

public class Main {

​    Map<String,Boolean> map = new HashMap<>(); 

​    public static void main( String[] args ) {

​        

​        Scanner in = new Scanner( System.in);

​        String password = in.next();

​        int cnt = 0;

​        // 记录出现了几种字符

​        int len = password.length();

​        if( len < 8 || len > 16 ) {

​            // 密码长度判断

​            System.out.println( "false" ); 

​            return;

​        }

​         for( int i=0; i < len ; i++ ) {

​            // 字符合法判断

​            

​            if(  isValid( password.charAt( i ) ) == false ) {

​                  // 如果当前字符不合法

​                 System.out.println( "false" ); 

​                 return;

​            } 

​         } 

​        if( map.get( "a" ) == true ) {

​            cnt++;

​        } 

​        if( map.get( "A" ) == true ) {

​            cnt++;

​        } 

​        if( map.get( "0" ) == true ) {

​            cnt++;

​        } 

​        

​        if( cnt < 2 ) {

​            // 字符种类数量判断

​            System.out.println( "false" ); 

​            return ;

​        }

​         

​        

​         return;

​    }

​    public boolean isValid( char c ) {

​        

​        if(  ( c -'a' >= 0 && c-'z' <= 0 ) ) {

​             

​            map.put( "a", true );

​            return true;

​        } else if(  ( c -'A' >= 0 && c-'Z' <= 0 )  ) {

​            

​            map.put( "A", true );

​            return true;

​        } else if( ( c -'0' >= 0 && c-'9' <= 0 )  ) {                        map.put( "0", true );
​            return true;
​        }​​

​        return false;

​    }

}

2、测试用例

{ input : "bcaD891123", expected : true }, // 满足三种

{ input : "BCDV654321", expected : true }, // 大写+数字

{ input : "12344321aa", expected : true },  // 小写+数字

{ input : "aabbccddee", expected : false},  // 仅有小写

{ input : "AABBCCDDEE", expected : false},  // 仅有大写

{ input : "1234567890", expected : false},  // 仅有数字

{ input : "1aA", expected : false},  // 长度小于8

{ input : "1aA1111111111111111111", expected : false},  // 长度大于16


8、扑克牌包含13*4张牌。洗牌,每次从牌堆顶抽牌,按照同种花色K->A(K在最上,A在最下)的顺序排列成4列。假设已洗好牌,编写代码将牌堆按照要求完成排列

完全不会。

#笔试#
全部评论
居然是校友
点赞 回复 分享
发布于 昨天 17:10 浙江

相关推荐

评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务