深圳中厂Java二面

C语言

1.求n的值,并写出原因。

int a[20];
char * p1 = (char * )a;
char * p2 = (char *)(a+5);
int n= p2-p1;
  • 答:n=0,因为数组默认初始化全为0,a[5]-a[0]=0

2.求 * p 的值,并写出原因。

int k = 0X123456;
char * p = (char *) &k;
  • 答:k的十进制值为1193046,*p表示的k的地址

操作系统

1.以下肯定不需要切换到内核执行的是哪个,为什么?

A)print("Hello world!");
B)FILE* fp = fopen("a.txt", "r");
C)auto p = new int();
D)以上均不是
  • 答:C,B需要系统进行IO读取,A需要调用外设屏幕打印,C为p变量分配内存,new关键字一般是在堆上面进行分配的,涉及到内存管理,不需要内核执行

计算机原理

1.x=-7,计算x的二进制原码,补码和反码(写清楚计算过程)。

  • 答:
    因为是负数所以符号位为1,所以-7的原码用8位显示的话就是10000111。
    反码 符号位不变,其余位取反,所以10000111取反就是11111000
    补码 最高位为1,其余位原码取反,再对整个数加1,也就是10000111 取反 11111000 在加1 得到 11111001
    综上所述:
    原码:10000111
    反码:11111000
    补码:11111001

2.FIFO缓存置换算法有哪几种,请用熟悉的编程语言实现一种

  • 答:采用Java语言实现,先概述一下思想,采用一个队列用于保证FIFO的要求,
    如下是具体实现:
import java.util.ArrayDeque;
class Main {
    /** 
    * @Description: 模拟FIFO
    * @Param: 
    * @return: 
    * @Author: alian
    * @Date: 2022/5/19
    */
    public static void main(String[] args) {
        ArrayDeque<PCB> que = new ArrayDeque<>();
        que.add(new PCB("任务一",1));
        que.add(new PCB("任务二",2));
        que.forEach((value)->{
            System.out.println(value.getPid()+":"+value.getName());
        });

    }
}
class PCB{
    String name;// 任务名
    int pid;//任务ID
    public PCB(String name, int pid) {
        this.name = name;
        this.pid = pid;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getPid() {
        return pid;
    }
    public void setPid(int pid) {
        this.pid = pid;
    }
}

计算机网络

1、谈谈TCP的三次握手过程,为什么三次,若两次可以吗,发送FIN包的函数是哪个?

  • 答:TCP的三次握手主要是为了确认服务端和客户端的状态,只有确定了两个端的状态都ok才会开始发数据,这也是TCP为什么是可靠传输的原因,三次握手的具体流程是:先由客户端发送SYN给服务端,服务端收到之后可以确认客服端的发送能力ok,服务端的接收能力ok,然后服务端发送SYN+ACK给客服端,客服端接收到了之后可以知道自己的发送能力和接收能力都ok了,并且还知道服务端的发送能力ok,若采用两次传输的话,服务器端不知道自己的发送能力是否ok!所以两次握手是不行的。
    具体发送FIN包的函数不太了解!

数据库基础

1.根据下列表和提示请写一个SQL计算连续登录天数

select UID,max(continue_days) as maxday
      (select UID,date_sub(loadtime,sort) as 	 date_group,min(loadtime) as start, max(loadtime) as end ,count(1) as continue_days
            (select UID,loadtime,row_number()over(partition by UID order by loadtime) sort
	     from user_login
    	    ) a
       group by UID,date_sub(loadtime,sort)
      ) b
group by UID

2.表结构如下

#构建数据库CREATE TABLE orders(
    id INT PRIMARY KEY AUTO_INCREMENT,
    order_time TIMESTAMP,
    cate VARCHAR(255),
    goods_id int,
order_amount int)INSERT INTO orders(order_time,cate,goods_id,order_amount) VALUES ('2018-02-28 00:00:01', '水果',223,100),('2018-02-28 01:01:01', '花茶',444,111),('2018-02-28 06:06:06', '花茶',444,666),('2018-03-01 07:01:10', '花茶',5555,170),('2018-03-01 08:00:00', '花茶',5555,180),('2018-03-01 00:00:01', '花茶',333,100),('2018-03-01 00:00:01', '花茶',444,188),('2018-03-01 00:00:01', '数码',45454,5399)

1)请统计2018年全年每月销售额,输出两列,分别为月份,销售额

答:此题主要是对concat函数的使用
select concat(year(order_time),'-',month(order_time)) as months, sum(order_amount) as Sales
from orders 
where year(order_time) = 2018 
group by months 

2)请统计2018年每月销售额,以及金额排名,输出三列,分别为月份、销售额、金额排名

答:
select A.months, A.sales, dense_rank() over(order by sales) as sales_rank
from
(select date_format(order_time, '%y-%m') as months, 
       sum(order_amount) as sales,
from orders 
where year(order_time) = 2018 
group by months) A

// rank()函数在进行排序的时候,如果有相同的则会出现间断,比如(1,1,3这种情况),而dense_rank()函数不会出现间断的情况(1,1,2,2,3等排名)

编程题

  • 1、把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。写一个程序,输入n,打印出s的所有可能的值出现的概率。
    提示:你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n 个骰子所能掷出的点数集合中第 i 小的那个的概率。
  • 例如
    示例 1:
    输入: 1
    输出: [0.16667,0.16667,0.16667,0.16667,0.16667,0.16667]
  • 示例 2:
    输入: 2
    输出: [0.02778,0.05556,0.08333,0.11111,0.13889,
    0.16667,0.13889,0.11111,0.08333,0.05556,0.02778]
class Main {
    /** 
    * @Description: /动态规划,抓寻找规律,把问题场景和分析描述清楚
    * @Param: 
    * @return: 
    * @Author: alian
    * @Date: 2022/5/19
    */
    public static void main(String[] args) {
        printArray(dicesProbability(1));
        printArray(dicesProbability(2));
    }
    public static void printArray(double []nums){
        System.out.println("-------------------------------------------");
        for(int i=0,len=nums.length;i<len;i++)
        {
            System.out.print(nums[i]);
        }
        System.out.println();
    }
    //动态规划,抓寻找规律,把问题场景和分析描述清楚
    public static double[] dicesProbability(int n) {
        //所有可能和
        double[] res = new double[5 * n + 1];
        //所有组合的总数
        double total = Math.pow(6, n);
        //动态规划所需二维数组
        int[][] dp = new int[n + 1][6 * n + 1];
        //初始状态即一个骰子点数和的情况
        dp[1][1] = dp[1][2] = dp[1][3] = dp[1][4] = dp[1][5] = dp[1][6] = 1;
        //n个骰子且和为s的次数 == n-1个骰子且和为s-6,s-5,...,s-1的情况之和。
        for (int i = 1; i <= n; i++) {
            for (int j = i * 6; j >= i; j--) {
                //求骰子个数为i且点数和为j各自出现的次数
                for (int k = 1; k <= 6; k++) {
                    dp[i][j] += j - k >= i - 1 ? dp[i - 1][j - k] : 0;
                }
                //最后一轮更新,把结果填入res中。
                if (i == n)
                    res[j - n] = dp[i][j] / total;
            }
        }
        //返回结果
        return res;
    }
}

逻辑测试题

  • 1、从所给的四个选项中,选择最合适的一个填入问号处,使之呈现一定的规律性∶( C )
    1.A
    2.B
    3.C
    4.D
  • 2、历练对于( )相当于磨砺对于( ) ( A )
    A、栉风沐雨; 千锤百炼
    B、波澜不惊; 一鸣惊人
    C、处心积虑;百折不回
    D、千辛万苦;九死一生
  • 3、严格指示词是指一个语言表达式所具有的如下性质∶它所指示的对象不会随着该表达式被使用的具体情境而发生改变。这些情境通常包括表达式的使用主体、表达式被使用的时间、地点、世界状态等等。
    根据上述定义,下列属于严格指示词的是∶( C )
    A、现任联合国秘书长
    B、世界上身高最高的人
    C、最小的素数
    D、经常坐在教室第一排正中间的同学
  • 4、真理是指客观事物及其规律在人的意识中的正确反映。真理可以分为理性真理和事实真理两种。理性真理指的是具有普遍性和必然性的真理,其反面是不可能的;事实真理指的是具有偶然性的真理,其反面是可能的。根据上述定义,下列属于理性真理的是∶( B )
    A、月晕而风,础润而雨
    B、如果a大于b且b大于c,那么a大于c
    C、恩惠要一点点地施舍才具有最大效益
    D、一个人如果违反了法律,就一定会受到法律的制裁
  • 5、人耳对一个声音的感受性会因另一个声音的存在而发生改变。一个声音能被人耳听到的最低值会因另一声音的出现而提高,这种现象就是听觉掩蔽。
    根据上述定义,下列符合听觉掩蔽的是∶( D )
    1.吵闹的课间,老师得大声说话,同学们才能听到
    2.长时间戴耳机听音乐,会觉得听到的音量逐渐变小
    C、人类无法听到蝙蝠等动物发出来的超声波
    D、安静的房间内,我们能够听到闹钟"滴答"的声音
  • 6、蛋∶ 卤蛋∶松花蛋( B )
    A、豆∶红豆∶ 四季豆
    B、油∶牛油∶植物油
    C、瓜∶丝瓜∶白兰瓜
    D、茶∶白茶∶ 乌龙茶
  • 7、从所给的四个选项中,选出最合适的一个填入问号处,使之呈现一定的规律性∶( D )
    1.A
    2.B
    3.C
    4.D
  • 8、某公司30岁以下的年轻员工中有一部分报名参加了公司在周末举办的外语培训班。该公司的部门经理一致同意在本周未开展野外拓展训练。所有报名参加外语培训班的员工都反对在本周未开展拓展训练。由此可以推出∶( D )
    A、所有部门经理年龄都在30岁以上
    B、该公司部门经理中有人报名参加了周末的外语培训班
    C、报名参加周未外语培训班的员工都是30岁以下的年轻人
    D、有些30岁以下的年轻员工不是部门经理
  • 9、众人拾柴∶火焰高( A )
    A、多行不义∶ 必自毙
    B、打破沙锅∶ 问到底
    C、敬酒不吃∶吃罚酒
    D、四海之内∶皆兄弟
  • 10、从所给的四个选项中,选择最合适的一个填入问号处,使之呈现一定的规律性∶( B )
    1.A
    2.B
    3.C
    4.D
  • 11、1、2、3、4为四个多面体零件,问A、B、C.D四个多面体零件中的哪一个与1、2、3、4中的任一个都不能组成长方体?( A)
    1.A
    2.B
    3.C
    4.D
  • 12、叶龄指数指的是禾谷类作物主茎已出叶数与最终总叶数的比值,是衡量作物生长进程的重要指标之一。
    根据上述定义,下列关于叶龄指数的说法一定正确的是∶( A )
    A、稻谷的叶龄指数与其生长进程成正比
    B、荞麦的叶龄指数越大则其产量也越高
    C、小麦的叶龄指数最大值为100%
    D、玉米的平均叶龄指数大于高粱
  • 13、传递关系指的是对任意的元素A、B、C来说,若元素A与元素B有某关系并且元素B与元素C有该关系,则元素A与元素C也有该关系。反传递关系指的是若元素A与元素B有某种关系并且元素B与元素C有该关系,但元素A与元素C没有该关系。
    根据上述定义,下列关系属于传递关系的是∶( A )
    A、自然数中的大于关系
    B、生活中的同学关系
    C、家庭中的父子关系
    D、食物链的天敌关系
  • 14、扶贫干部某日需要走访村内6个贫困户甲、乙、丙、丁、戊和己。已知甲和乙的走访次序要相邻,丙要在丁之前走访,戊要在丙之前走访,己只能在第一个或最后一个走访。问走访顺序有多少种不同的安排方式?( B )
    A、24
    B、16
    C、48
    D、32
  • 15、某企业国庆放假期间,甲、乙和丙三人被安排在10月1号到6号值班。要求每天安排且仅安排1人值班,每人值班2天,且同一人不连续值班2天。问有多少种不同的安排方式?(C )
    A、15
    B、24
    C、30
    D、36
  • 16、甲、乙两辆卡车运输一批货物,其中甲车每次能运输35箱货物。甲车先满载运输2次后,乙车加入并与甲车共同满载运输10次完成任务,此时乙车比甲车多运输10箱货物。问如果乙车单独执行整个运输任务且每次都尽量装满,最后一次运多少箱货物?( C )
    A、10
    B、30
    C、33
    D、36
  • 17、一条圆形跑道长500米,甲、乙两人从不同起点同时出发,均沿顺时针方向匀速跑步。已知甲跑了600米后第一次追上乙,此后甲加速 20%继续前进,又跑了1200米后第二次追上乙。问甲出发后多少米第一次到达乙的出发点?( A )
    A、180
    B、150
    C、120
    D、100
  • 18、某新建小区计划在小区主干道两侧种植银杏树和梧桐树绿化环境,一侧每隔3棵银杏树种1棵梧桐树,另一侧每隔4棵梧桐树种1棵银杏树,最终两侧各种植了35棵树,问最多栽种了多少棵银杏树?( B )
    A、33
    B、34
    C、36
    D、37
  • 19、丙地为甲、乙两地之间高速公路上的一个测速点,其与甲地之间的距离是与乙地之间距离的一半。A、B两车分别从甲地和乙地同时出发匀速相向而行,第一次迎面相遇的位置距离丙地500米。两车到达对方出发地后立刻原路返回,第二次两车相遇也为迎面相遇,问第二次相遇的位置一定∶( B )
    A、距离甲地1500米
    B、距离乙地1500米
    C、距离丙地1500米 c
    D、距离乙、丙中点1500米
  • 20、小王从甲公司跳槽到乙公司,年工资总额增长25%,乙公司的工资总额包括现金部分和股票部分,现金总额和股票价值总额比例为3∶ 1,股票价值按照签订合同当日股票收盘价计算。一年后公司由于重大变动股价比小王入职时下跌48%,如果按此时股价计算,小王在乙公司工作一年获得的实际工资总额与在甲公司相比∶( C )
    A、下降 10%
    B、下降15%
    C、增长10%
    D、增长15%
  • 21、小张和小王在同一个学校读研究生,每天早上从宿舍到学校有6∶40、7∶00、7∶20和7∶40发车的4班校车。某星期周一到周三,小张和小王都坐班车去学校,且每个人在3天中乘坐的班车发车时间都不同。问这3天小张和小王每天都乘坐同一趟班车的概率在∶( C )
    A、3%以下
    B、3%~4%之间
    C、4%~5%之间
    D、5%以上
  • 22、高架桥12∶ 00~14∶ 00每分钟车流量比9∶00~11∶00少20%,9∶ 00~11∶00、
    12∶ 00~14∶00、17∶00~19∶00三个时间段的平均每分钟车流量比9∶ 00~11∶ 00多10%。问17∶00~19∶ 00每分钟的车流量比9∶00~ 11∶ 00多∶( B )
    A、40%
    B、50%
    C、20%
    D、30%
  • 23、有甲、乙、丙三个工作组,已知乙组2天的工作量与甲、丙共同工作1天的工作量相同。A工程如由甲、乙组共同工作3天,再由乙、丙组共同工作7天,正好完成。如果三组共同完成,需要整7天。B工程如丙组单独完成正好需要10天,问如由甲、乙组共同完成,需要多少天?( C )
    A、不到6天
    B、6天多
    C、7天多
    D、超过8天
  • 24、某单位从理工大学、政法大学和财经大学总计招聘应届毕业生三百多人。其中从理工大学招聘人数是政法大学和财经大学之和的80%,从政法大学招聘的人数比财经大学多60%。问该单位至少再多招聘多少人,就能将从这三所大学招聘的应届生平均分配到7 个部门?( A )
    A、6
    B、5
    C、4
    D、3
  • 25、某人租下一店面准备卖服装,房租每月 1万元,重新装修花费10万元。从租下店面到开始营业花费3个月时间。开始营业后第一个月,扣除所有费用后的纯利润为3万元。如每月纯利润都比上月增加2000元而成本不变,问该店在租下店面后第几个月内收回投资?( A )
    A、7
    B、8
    C、9
    D、10
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿联爱学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值