360后端笔试分享20220321+算法题求解

面试内容:思维考察题(C++程序题,Java程序题,数学题)、计网、Linux命令、MySQL、Redis、排序题、Java语言题(Swing GUI工具包、内存优化)、算法

目录

1、思维考察题

1)2x\log_{2}{x}x(2/3)x^(2/3)哪一个更高阶?(x^(2/3))

​ 相除取极限,洛必达法则

2、计网

**1)**软件体系结构中使用http协议进行通信的结构?(B/S结构)

C/S结构:每台客户机全部须要安装相对应的客户端程序,(APP)

B/S结构:只安装维护一个服务器(Server),而客户端选用浏览器(Browse)运行软件,基于统一的应用层协议HTTP来交互数据。(网站)

3、Linux命令

**1)**centos安装apache

​ yum install httpd

**2)**把任务从后台切换到前台

  1. 命令 + &,&表示让进程在后台运行

  2. jobs ,查看后台运行的进程

  3. fg %n, 让后台运行的进程n到前台来

  4. bg %n, 让进程n到后台去

​ 5. kill %n, 杀死job

 PS:"n"为jobs命令查看到的job编号,不是进程编号.

 fg、bg、jobs、&、ctrl + z都是跟系统任务有关的,虽然现在基本上不怎么需要用到这些命令,但学会了也是很实用的.

**3)**chgrp, chown, chmod

​ chgrp: 设置文件所归属的组

chgrp 组名 目标1 [目标2 ...]
"组名"是文件即将关联的组。
"目标1 [目标2 ...]"是需要改变组的文件或目录的列表。

​ chown: 设置文件所有者和文件关联组

chown user file
user : 新的文件拥有者的使用者 ID
file: 文件

chmod: 设置用户对文件的权限

chmod mode file
chmod 777 file1.txt(777:Owner,Group,Other Users对该文件的权限都是7——可读可写可执行)

https://www.runoob.com/linux/linux-comm-chmod.html

4、MySQL

**1)**游标的结果集是由执行什么语句产生的?(SELECT)

5、 Redis

**1)**Redis存储对象使用什么结构?(hash)

6、排序题

**1)**稳定排序中,空间复杂度为O(1)的排序(直接插入排序)

7、算法题

有n个黑白棋子,他们的一面是黑色,一面是白色。他们被排成一行,位置可以用标号1~n来表示。一开始,所有的棋子都是黑色向上,有q次操作,每次操作将位置标号在区间[L,R]内的所有棋子翻转(原来黑色变白色,原来白色变黑色)。请在每次操作后,求这n个棋子中,黑色向上的棋子个数。

输入描述:第一行两个整数 n,q, 1<= n <= 1018, q <= 300; 后面q行,每行两个整数L,R, 1 <= L <= R <= n。

输出描述:q行,每行一个整数,表示每次操作后黑色向上的棋子个数。

本人答案:

import java.util.Scanner;

public class Points {

    //计算目前黑色棋子向上的数量
    public static void calcu(boolean[] points) {
        int sum = 0;
        for(int i=1;i<points.length;i++) {
            if(!points[i])  sum += 1;
        }
        System.out.println("黑色棋子个数:"+sum);
    }

    //对left<=序号<=right,这范围内的棋子进行翻转操作
    public static void upsideDown(boolean[] points, int left, int right) {
        for(int i=left;i<=right;i++) {
            points[i] = !points[i];
        }
        calcu(points);
    }
    public static void main(String[] args) {
        //输入棋子总数和翻转次数
        Scanner scanner = new Scanner(System.in);
        System.out.println(Integer.MAX_VALUE);
        int n = scanner.nextInt();
        int q = scanner.nextInt();
        //生成一个对应的棋子数组,用false代表该棋子目前是黑色向上,points[1]代表第一个棋子,points[n]代表第n个棋子
        boolean[] points = new boolean[n+1];
        for(int i=0;i<q;i++) {
            upsideDown(points, scanner.nextInt(), scanner.nextInt());
        } 
        scanner.close();
    }
}

从题目描述来看并不难,我通过简单的方法解决了1<=n<=2147483646(Integer.MAX_VALUE-1)的情况,但是当2147483647 <= n<= 1018时这个方法就不奏效了,请问一下各位路过的大佬有解决的方案吗wuwuwu

全部评论

相关推荐

头像
11-21 11:39
四川大学 Java
是红鸢啊:忘了还没结束,还有字节的5k 违约金
点赞 评论 收藏
分享
秋招进行到现在终于能写总结了。完全没想到战线会拉这么长,过程会如此狼狈,不过更应该怪自己太菜了。好在所有的运气都用在了最后,也是有个去处。背景:双2本硕科班,无竞赛,本科一段研究所实习,硕士一段大厂暑期实习但无转正。技术栈是C++&nbsp;&amp;&nbsp;Golang,实习是客户端音视频(而且是鸿蒙端开发),简历两个C++项目一个Golang项目。主要投递岗位:后端,cpp软开,游戏服务端,测开,以及一些不拘泥于Java的岗位。从8月起总共投递123家公司,笔试数不清了,约面大约30家。offer/oc/意向:友塔游戏(第一个offer,面试体验很好,就是给钱好少南瑞继保(计算机科班点击就送(限男生),不...
乡土丁真真:佬很厉害,羡慕~虽然我还没有到校招的时候,也想讲一下自己的看法:我觉得不是CPP的问题,佬的背书双2,技术栈加了GO,有两段实习。投了123,面了30.拿到11个offer。这个数据已经很耀眼了。这不也是CPP带来的吗?当然也不止是CPP。至少来说在这个方向努力过的也会有好的结果和选择。同等学历和项目选java就会有更好的吗?我个人持疑问态度。当然CPP在方向选择上确实让人头大,但是我觉得能上岸,至于最后做什么方向,在我看来并不重要。至于CPP特殊,有岗位方向的随机性,java不是不挑方向,只是没得选而已。也希望自己以后校招的时候能offer满满
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务