-
devkit对java源码迁移后,如何编译?
-
求助一下,断点续传上传和下载,如何中断上传或下载?
-
Oracle的EBS系统, 3.*版本的设计器无法拾取,提示如下:临时解决方案: Java 1.8版本下载链接, 然后在本地构造提示的路径即可.先测试这个版本是否可以使用. Jdk-8u202-windows-i586.exe另外还可以去oracle官网下载Java1.8版本https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html的这个版本也可以, 只是要注册并且下载速度较慢 jre-8u331-windows-i586.exe除去以上操作,还需要在1.6的java环境里添加javabridge的相关内容, 具体可参考 https://bbs.huaweicloud.com/forum/thread-166931-1-1.html
This is WeAutomate
发表于2022-08-01 14:37:15
2022-08-01 14:37:15
最后回复
This is WeAutomate
2022-10-20 12:24:26
582 1 -
这个注解的作用就是自动的给model bean实现equals方法和hashcode方法。但是,这个参数,callsuper = false 有问题吗?你在使用这个注解的时候,确定知道“为什么要重写hashcode和equals方法吗?”先看下面的测试。两个model的代码我就截图啦:父类 TV.java 和 子类 小米TV.java,使用这个注解@EqualsAndHashCode(callSuper = false) 小米tv继承tv,从继承角度讲tv有的属性,小米tv也是有的。看测试main方法 import com.lxk.model.XiaoMiTV; /** * 测试@EqualsAndHashCode注解的使用 * * @author LiXuekai on 2019/5/10 */public class EqualsAndHashCodeTest { public static void main(String[] args) { XiaoMiTV tv1 = new XiaoMiTV("123", "lxk", 1L, "白"); XiaoMiTV tv2 = new XiaoMiTV("456", "sql", 1L, "白"); System.out.println(tv1.equals(tv2)); }}来吧,大胆猜测一下,这个代码的运行结果。true还是false?猜完了,来看下运行结果图:这个因为咱在子类里面这么使用@EqualsAndHashCode(callSuper = false) ,不调用父类的属性,那么子类属性里面的相同的话,那hashcode的值就相同啦,所以代码里面的2个tv的equals方法的返回值是true那么,把@EqualsAndHashCode(callSuper = false) 的false改成true之后的结果呢?来,再猜测一下。猜完了,看运行结果(就只改@EqualsAndHashCode(callSuper = false) 里面的false改成true)这个估计就好猜了。@EqualsAndHashCode(callSuper = true),那就是用自己的属性和从父类继承的属性 来生成hashcode,比较的结果就好猜啦。那么,再把@EqualsAndHashCode(callSuper = false) 这个语句注释了呢?这个时候代码运行结果如何?来,还是再猜一下吧。猜完了,看下运行结果图竟然是true,原来他默认就是不管父类继承的属性的。看Lombok的提示:自动生成hashcode和equals方法,但是没call super,虽然这个class不是直接extends Object类,如果这是故意的,那么请加上@EqualsAndHashCode(callSuper = false) 这句话到你的model上。非常建议:去了解下为啥要重写hashcode和equals方法。要是说你觉得你造了,那再问一下,set为啥能去重复呢?刚刚那2个tv都放到一个set里面,能放进去吗?深入了解一下吧。————————————————原文链接:https://blog.csdn.net/qq_27093465/article/details/90056695
-
在我们编写代码过程中听到过很多说法如:面向切面编程,函数式编程,面向对象编程,泛式编程等等接着我来说下链式编程普通: 1:维护性强 2:对方法的返回类型无要求 3:对程序员的业务要求适中链式: 1:编程性强 2:可读性强 3:代码简洁 4:对程序员的业务能力要求高 5:不太利于代码调试 在java中StringBuilder已经实现了链式的写法 StringBuilder builder = new StringBuilder(); builder.append("blake").append("bob").append("alice").append("linese").append("eve");是不是很方便呢!怎么实现呢,其实就是在设置的返回当前的对象jdk StringBuilder的写法@Override public StringBuilder append(String str) { super.append(str); return this; }试着按这种方法一个例子如下:public class Apple { private double height; private String color; private boolean flag; public double getHeight() { return height; } public Apple setHeight(double height) { this.height = height; return this;// return 当前对象 } public String getColor() { return color; } public Apple setColor(String color) { this.color = color; return this;// return 当前对象 } public boolean isFlag() { return flag; } public Apple setFlag(boolean flag) { this.flag = flag; return this;// return 当前对象 } public Apple() { } @Override public String toString() { return "Apple{" + "height=" + height + ", color='" + color + '\'' + ", flag=" + flag + '}'; } @Override public boolean equals(Object obj) { return super.equals(obj); } public static void main(String[] args) { Apple apple = new Apple(); apple.setColor("red").setFlag(true).setHeight(22.56);//链式 System.out.println(apple); }}打印结果如下:Apple{height=22.56, color='red', flag=true}————————————————原文链接:https://blog.csdn.net/u010061287/article/details/78953591
-
1.File类的简介 File文件类主要用于文件和目录的创建、文件的查找和文件的删除等功能,File对象代表磁盘中实际存在的文件和目录,它是通过构造方法来创建一个File对象,再通过实际需要的绝对路径来创建一个新的File实例。创建好的File实例就对应实际磁盘上的真实文件,我们就可以对这个真实文件进行创建、删除、获取相关信息等操作,这些都是会真实反应到磁盘对应的文件上的,也就是我们代码中创建了文件真实磁盘上也会创建对应的文件,删除了文件也会真实的删除对应的文件。2.File文件的创建 2.1 创建File对象和实例化 首先我们创建一个File对象和他的实例,只需传好给定待操作的文件路径,再调用File的有参构造器就可以完成对象的创建和实例化操作。File file = new File("D:\demo"); 2.2 创建文件 文件可以分为文件夹(目录)及文件两种形式,这两种形式都可以是多级的,比如D:\demo\test\test.txt,如果想创建test.txt文件或者test目录,就需要他的上级目录存在。 2.2.1 如果他的上级目录或者上上级目录不存在 2.2.1.1 创建文件夹D:\demo\test 可以通过mkdir()方法或者mkdirs()方法进行创建,都不会报错,但是调用mkdir()方法如果上级或者上级以上目录不存在,不会自动创建他缺少的这些路径目录,如果缺失其中的目录他就会啥都不做,并且返回false。 如果通过mkdirs()方法进行创建,他会自动帮助创建缺失的目录,创建成功后会返回true。但是使用mkdirs()创建的路径中出现文件的话,他也将他当成目录来创建,所以mkdirs()虽然可以自动帮助创建缺失的目录,但是他只能创建目录不能创建文件。 2.2.1.2 创建文件D:\demo\test\test.txt 那么如何创建文件呢?我们可以通过createNewFile()方法进行创建一个空的文件,基本什么文件格式的文件都可以创建只不过这样创建的都是空的文件。 上面我们创建了一个test.txt的文件夹,这时候如果调用createNewFile进行文件创建的话,会什么都不做,并且返回false。如果上级或者上级以上目录缺失,则会IO异常报错,找不到指定路径。如果目录中已经存在这个文件,则会什么都不做并且返回false。2.2.2 正确的创建文件通过上面的探索,我们知道了创建文件需要注解的哪些点,那么我们就可以避免这些,第一必须上级及以上目录存在,第二必须要创建的文件在这个路径上不存在。首先我们先了解下File的路径上的相关方法public static void main(String[] args) throws IOException { // File file = new File("F:\\demo123\\test\\test.txt"); File file = new File("F:/demo123/test/test.txt"); System.out.println("file.getAbsoluteFile() :" + file.getAbsoluteFile()); System.out.println("file.getAbsolutePath() :" + file.getAbsolutePath()); System.out.println("file.getCanonicalFile() :" + file.getCanonicalFile()); System.out.println("file.getCanonicalPath() :" + file.getCanonicalPath()); System.out.println("file.getParent() :" + file.getParent()); System.out.println("file.getParentFile() :" + file.getParentFile()); System.out.println("file.getName() :" + file.getName()); System.out.println("file.getTotalSpace() :" + file.getTotalSpace()); System.out.println("file.getUsableSpace() :" + file.getUsableSpace()); System.out.println("file.getPath() :" + file.getPath()); boolean mkflag = file.createNewFile(); System.out.println(mkflag); }返回的结果是:file.getAbsoluteFile() :F:\demo123\test\test.txt file.getAbsolutePath() :F:\demo123\test\test.txt file.getCanonicalFile() :F:\demo123\test\test.txt file.getCanonicalPath() :F:\demo123\test\test.txt file.getParent() :F:\demo123\test file.getParentFile() :F:\demo123\test file.getName() :test.txt file.getTotalSpace() :271249829888 file.getUsableSpace() :254060650496 file.getPath() :F:\demo123\test\test.txt false Process finished with exit code 0接下来我们编写我们创建文件代码public static void main(String[] args) throws IOException { // File file = new File("F:\\demo123\\test\\test.txt"); File file = new File("F:/demo123/test/test.txt"); if(!file.getParentFile().exists()){ file.getParentFile().mkdirs(); } boolean mkFlag = false; if(file.exists()){ mkFlag = file.createNewFile(); System.out.println("调用创建文件方法结果是" + mkFlag); System.out.println("文件已经存在不进行创建"); }else { mkFlag = file.createNewFile(); System.out.println("调用创建文件方法结果是" + mkFlag); } if(mkFlag){ System.out.println("文件创建成功"); }else { System.out.println("文件创建失败"); } }如果创建成功返回:调用创建文件方法结果是true 文件创建成功如果创建失败返回:调用创建文件方法结果是false 文件已经存在不进行创建 文件创建失败这样我们就了解了如果创建一个文件的过程和中间要注意到的细节了。3.File类中一些常用的方法3.1 创建文件的三构造方式:File file = new File(String pathname);//文件/文件夹路径对象File file = new File(String parent, String child);//父目录绝对路径 + 子目录名称File file = new File(File parent, String child);//父目录File对象 + 子目录名称3.2 对文件的操作方法file.exists():判断文件/文件夹是否存在file.delete():删除文件/文件夹file.isDirectory():判读是否为目录file.isFile():判读是否为文件夹file.mkdir():创建文件夹(仅限一级目录)file.mkdirs():创建多及目录文件夹(包括但不限一级目录)file.createNewFile():创建文件file.getAbsolutePath():得到文件/文件夹的绝对路径file.getName():得到文件/文件夹的名字file.String():同样是得到文件/文件夹的绝对路径等于file.getAbsolutePath()file.getParent():得到父目录的绝对路径,返回值是String类型 file.getParentFile():得到父目录的绝对路径,返回值是File类型file.list():得到当前目录的子目录或者文件的名称,只是文件或者目录的名称没有前面的全路径,返回String类型的数组。注意这个方法只会查询file这个实例路径下的一级的文件或者目录,不会再往第二级进行查找。file.listFiles():得到当前目录的子目录或者文件,返回File类型的数组。注意这个方法只会查询file这个实例路径下的一级的文件或者目录,不会再往第二级进行查找。4.创建文件的一些小知识点4.1 创建文件的时候路径中的斜杠可以通过进行转义后\\的形式,也可以通过第二种/的形式。File file = new File("F:\\demo123\\test\\test.txt"); File file = new File("F:/demo123/test/test.rxt");4.2 File.separator 创建文件路径的时候这个斜杠往往挺头疼的,因为不同系统可能不会出现不识别的情况,所以出现了这个文件分隔符File.separator保证了在任何系统下不会出错。 在 Linux 中是不识别 ' \ ' 的,在 UNIX 系统上分隔符被翻译成 ' / ',而在Windows系统上分隔符被翻译成 ' \ ' ,这样就消除了这些系统的区别。以上就是File文件类的简单了解和总结。
-
【功能模块】进入hetu命令行不管输入什么都报错:Error running command: java.net.ConnectException: Failed to connect to /192.168.1.140:29884但是这个ip不是hetu的节点,不知道为什么会去连这个ip【操作步骤&问题现象】1、2、【截图信息】【日志信息】(可选,上传日志内容或者附件)
-
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();env.enableCheckpointing(1000);env.getCheckpointConfig().setCheckpointingMode(CheckpointingMode.EXACTLY_ONCE);env.setParallelism(Integer.valueOf(prop.getProperty("setParallelism")));TableEnvironment tEnv = StreamTableEnvironment.create(env);tEnv.executeSql("CREATE TABLE kafka(\n" +"uuid VARCHAR(20),\n" +"name VARCHAR(10),\n" +"age INT,\n" +"ts TIMESTAMP(3),\n" +"`p` VARCHAR(20)\n" +") WITH (\n" +"'connector' = 'kafka',\n" +"'topic' = 'writehudi',\n" +"'properties.bootstrap.servers' = 'x.x.x.x:21005',\n" +"'properties.group.id' = 'testGroup1',\n" +"'scan.startup.mode' = 'latest-offset',\n" +"'format' = 'json'\n" +")");tEnv.executeSql("CREATE TABLE stream_mor(\n" +"uuid VARCHAR(20),\n" +"name VARCHAR(10),\n" +"age INT,\n" +"ts timestamp(3),\n" +"`p` VARCHAR(20)\n" +") PARTITIONED BY (`p`) WITH (\n" +"'connector' = 'hudi',\n" +"'path' = 'hdfs://hacluster/tmp/hudi/stream_mor',\n" +"'table.type' = 'MERGE_ON_READ',\n" +"'compaction.delta_commits' = '1'\n" +")");tEnv.executeSql("INSERT INTO stream_mor select * from kafka");env.execute("FlinkSQLJob");附件为完整工程样例,具体执行步骤请参考https://bbs.huaweicloud.com/forum/forum.php?mod=viewthread&tid=86598
-
【功能模块】java性能【操作步骤&问题现象】1、安装毕昇jdk1.8 2、安装maven3.8.63、本地启动jar包4、登陆鲲鹏性能分析页面5、点击java性能分析6、点击采样分析【截图信息】【日志信息】(可选,上传日志内容或者附件)
-
本人是在 9 月 22 日下午开始正式“躺平”,如释重负 !回想起从 5 月开始找实习就一直在面试,到 6 月底才开始准备保研 (太晚开始导致那时候还挺焦虑的 ),到 7 月一边夏令营复习一边面试,我的夏令营结束后 (7.22 最后面中科大) 又开始“躺”,8 月下旬又开始一边实习一边刷 PAT,9 月开始新一轮预推免复习和面试,终于熬出头了 !下面我会将我的保研过程 (包括夏令营和预推免) 尽量详细的记录下来,还会推荐很多好用的网站,供学弟学妹们参考。保研术语看一些经验帖或者保研群里会出现一些术语会让人一脸懵,所以很有必要了解一下。借鉴 https://zhuanlan.zhihu.com/p/394491286rk:rank,排名。最常说的就是 rk1,第一名title:学校的牌子 (知名度)强/弱 com:强 committee 指委员会面试占比重,导师没有很大话语权;弱 committee 指导师在夏令营录取中有很大话语权ap:assistant professor,助理教授oq:over qualified,比如一个清北的学生报名西交的夏令营却没入营,说明他 oq 了bar:门槛wl:waiting list,候补队列陶瓷:提前联系老师个人情况专业排名:末9 软件工程 rk1BUFF:四级 500+,六级 500-,无论文,无科研,几个水奖 (网页设计、程序设计、互联网+、天池、人工智能等),一个大创负责人,一个 top2 实习经历 (偏工程),字节实习 (后端)TIPS:因为我有独立完成的项目 (top2实习) 和实习经历 (字节),好几个面试的老师或学长都认为我代码能力很强~ 有些同学会认为实习不要写在简历上,因为有的老师不让、不喜欢想实习的同学,我觉得这是不冲突的。本科实习不代表你研究生也要实习呀,反而能体现出你有一定的工程能力,研究生基本要学术+工程能力兼顾的)。甚至我有的导师还会推荐你去实习。选择:报学校首先要清楚自己的定位,目标可以稍微高一点点,比如你觉得自己可以上浙大,那也不妨报一手清北,不嫌麻烦建议都报。我对自己的定位是纯 rk 选手,优势在于有实习经历,刚开始比较想冲的学校是浙大 cs。在直硕和直博上,想从硕士读起,不太能接受专硕。毕竟没有一段完整的科研经历,不清楚自己是否适合读博。个人认为读直博的话,路比较窄,而且压力会很大,万一导师不好更惨,还可能延毕什么的,而先读硕士就不用考虑那么多。但是如果是 top2 的 cs 还是可以接受直博的 hh (坑导除外)。关于是否直博网上有很多帖子,切记不要为了 title 盲目直博~学校:pku=thu > zju > fdu=sjtu > nju > ustc导师:研究方向 > 人品 > 学术水平 > 待遇地域:深圳=广州 > 杭州 > 其他 > 北京 (能去 top2 的话北京也无所谓)OFFER:总共参加了 11 个学校的夏令营/预推免,到最后除了南大都有 offer最终去向:北京大学信息工程学院 - 计算机学硕 (信科导师)前期准备前面说了我 5 月份基本上一直在找实习,到 6 月又基本在搞大作业或者复习考试,正式开始准备应该在 6 月底。这里建议大家一定要尽早准备材料,尽早复习,甚至可以尽早 (3/4 月就开始) 联系老师!不然就会像那时的我一样老是觉得复习不完然后压力大 这里我还要感谢我小学期导师 w 老师,否则 7 月份将更忙!那该如何进行准备呢?这里先推荐一个计算机保研交流群:605176069。不过因为此群太火,我又不爱水群,被 LRU 好几次了 (进群就懂 LRU 了)。在这个群里你会获得许多最新消息,最新资源,有许多成功保研的学长学姐也在里面,十分推荐!进入正题,我认为保研必须准备:一张好看 (又看得出是你) 的证件照 + 简历。虽然有的学校报名并不需要简历,但是理一遍自己的简历基本上就是理一遍之后要用到的更详细的材料。写在简历上的东西要保证都会而且真实。推荐一个制作简历的网站,选择简单大方的模板填写。新建一个专门存放保研期间素材的文件夹,然后在里面建立以下文件夹:成绩证明:包括英语水平证明 (六级很重要,有 460+ 基本可以报所有学校了,越高分越好),带有教务处盖章的成绩单和排名证明。排名有很多种,如果学校没有特别要求,可以用排名最高的证明个人信息:包括中文个人陈述,英文自我介绍,个人介绍 PPT,身份证复印件,学生证复印件,陶瓷模板推荐信:包括 2-3 位老师的推荐信模板荣誉获奖证明:包括你的各种获奖证明。如果发过论文可以再建一个论文文件夹学校:包括你所报名的每个学校,每个学校又是一个文件夹。因为每个学校需要什么材料是不一样的,所以分学校来存放会比较好上面一些文字性的材料在保研过的学长学姐那或网上都可以找到很多模板。然后这些材料一般会要求以 pdf 格式上传,还有的要合并成一个 pdf,所以这里推荐一个处理 pdf 的免费网站,无需注册,功能丰富且好用!联系老师因为我当时真的没有时间提前联系老师了,所以我基本是入营了,或者拿到 offer 了才联系老师。我建议时间充足情况下可以提前联系老师,尤其是优秀的同学,有些好导师名额确实 3/4 月就满了。联系老师的作用?对于导师权力大的学校,老师要你基本上就稳了。而且有的老师愿意给你提供帮助,比如告诉你要注重复习哪些方面等。但是也有的老师只是回复一些官方回复,例如“欢迎报考”之类的,甚至也会遇到不回复的老师,这些都不要紧,很常见的事情,本文最后也会说到这个事情。了解写在简历上的项目经历或科研经历,这没啥好说的,不要问到又不会,尽量啥都会以体现就是你自己做的,花了心血在上面。至少要复习到以下内容机试:书本推荐看《算法笔记》和《王道机试指南》(需要的可以 dd);实战推荐分类刷 leetcode、pat 甲级,想去北航的刷 csp,也可以针对学校刷往年题库,网上找或者牛客网上有。注意最好用 C/C++ 刷,容错率高。复习过程也可以帮助你回忆基础数据结构和算法。专业课:操作系统,计算机网络,计算机组成原理/计算机系统,数据库,编译原理等 (我还被问到过根本没复习的选修课…)。推荐一个复习网站,这是我当时准备实习时开始用的,后面保研时想快速复习的话也会看一下,不过只看他是远远不够的,cs 黑书 yyds!数学:高数、线代、概率论。如果不报中科院的话,我觉得只需要知道一些基础概念就行。中科院有的实验室笔试要做一些数学题啥的,可能要复习得细致一点。英语:从准备一份详细的英文自我介绍开始,可以让你解决大多数的英文问题。(面试中我最怕就是英文环节了,自认为英语真的很差,问专业课的话多多少少都会有点印象。不过每天多背背自我介绍,等到预推免的时候其实也不怕英文了~) 其他常见的英文问题有 (网上也能找到很多模板) 介绍大学、介绍专业/计科和软件的区别、为什么要读研/读博/适合读博吗等等,大家可以参考我这篇博文,是我当时准备英语的资料,有各种必备问题和模板回答。夏令营情况本人基本报的都是 cs 学硕,只有 top2 我才会选择直博,毕竟 title up++。下面是我的入营和参营情况,没参营的我会大概说一下我了解到的形势 (但不一定真实,有些是有事没事翻绿群看到的)。一开始我对自己的定位是比较高的,部分中九或不是很想去的学校不打算报。只是一些开奖 (入营 offer) 早的、觉得大概率能入营的学校,身边一些优秀同学都没入营,实在没想到那么卷 ,就报了几所保底学校 初审情况 原因 / 结果清华软件学院 ✓直博 未参加。入营 60 人,夏令营是不发 offer 的,感觉对预推免的帮助也不是很大。不过有看过面经说夏令营机试做的太好拿到口头 offer 的。不过经过这次夏令营看到了很多杯具,口头 offer 也不要全信,养鱼这事毕竟都是你养我养大家养 (但我非必要时不养 hhh)北大信科 ✗直博 实习导师的直博名额都给本校了,就被拒了。信科直博名额比较多,外校学硕比较少。不过今年听说信科因为扩招和般昌平变简单了,外校学硕都多了很多武大计算机学院 ✓硕 offer。入营不多不少,武大夏令营有本校保护,优营即 offer。不过优营鸽子应该挺多的,预推免上岸也是希望很大的南开大学计算机学院 ✓硕 面试合格,需要再通过实验室考核才算 offer。入营很多,面试通过的也多,实验室考核听说比较硬核,要复线论文啥的哈工大 (深圳) 计算机 ✓硕 offer。入营 60+人?每个学校均匀分配 1-3 人,据说是为了宣传,最后优营感觉有 30+。最后没听说被鸽穿北航计算机学院 ✓硕 wl 靠前,后来补录到。北航夏令营是给外校的,而且入营了不参加或者没过也不能再报预推免来,在预推免阶段需要和本校生竞争,夏令营入营和优营都很多,不过今年优营减少了,最后同学 wl 60 也上岸了人大高瓴 ✓硕 未参加。学硕入营 120 个左右,参营 80+。人大信院和高瓴没有预推免,想去的要抓住夏令营机会,参加了至少有 wl。高领去年和今年(学硕) 都鸽穿了,今年报直博的 wl 里还可以转硕复旦大学计算机学院 ✗硕 我校软件全军覆没 ,无话可说…华科计算机 ✓硕 offer。985 基本可以入营,听说 211 只给专硕。面试老师感觉很亲和南大计算机 ✓硕 入营很多人,要再做个线上测试 (大概 20 来个选择题,啥题都有,很无语),相当于二次选拔,通过才能正式进入面试,没过 hhh… 而且南大 cs 今年有各种迷惑操作,结果到最后还是被鸽穿了中大计算机 ✓硕 offer。中大 cs 负责招生的李老师特别负责,整个招生流程也很公开。不过最后中大也还是穿了,高中时的梦校啊中科大计算机 ✓硕 wl 靠前,通过了导师面。学院说 wl 靠前的基本可补到学硕,wl 后面的也有机会录到,不过只剩专硕了。科大没有直博,不怎么考察英语,所以也不卡 6 级,我在后面的面经会介绍科大老师给我说的一些面试要点。科大 cs 貌似没穿,可能是因为 wl 太长了吧中科院计算所、软件所 ✓ 计算所未参加,软件所参加了线上第一轮面试。因为要线下参加且不管食宿和路费,然后也没有说特别想去中科院,emmm 综合考虑就没参加 中科院是弱 com 吧,即使没入营老师要你也可以去面试 (霸面)。报的学校除了北大和复旦都入营了,最终参加了 7 所学校的面试 (线上夏令营的好处就是可以并发进行 hhh),到最后基本都可以被录取。下面记录一下面经。软件所并行实验室软件所开奖很晚,好像20多号开的,看到自己入营了,入营的是并行实验室,但我记得我好像没选实验室。回去看报名要求发现要在备注写上意向实验室,否则不会报名成功,当时没注意到这个却入营了,觉得也是缘分和机遇,就参加了第一次线上交流和面试。实验室老师都挺亲和的,线上交流就是老师们介绍实验室的发展状况和一些老师的研究方向以及相关招生信息。然后没多久就组织面试,我是第一个面试的,过程还是比较轻松。自我介绍 PPT 10mins怎么了解到并行实验室的怎么理解并行你校用的 csapp 这本书,你喜欢这门课吗?喜欢哪个部分?SIT 项目是什么项目打算读硕士还是直博,如果想读博士要考虑清楚,不然之后转博名额会受限制因为软件所是要线下参加,但是当时疫情和汛情好像有的同学可以线上参加,我是抱着线上参加的心理。结果最后因为我不是疫情和汛情原因无法线下参加,就没有后面的流程了。武汉大学计算机武大也算是高中时期的一个梦校了吧,印象最多的就是校园环境超美。武大 cs 的夏令营有本校保护,有幸入营~ 往年有笔试 (感觉笔试不简单),今年没有,直接上面试记录:3 分钟自我介绍在研究生阶段,你发现你和其他同学有所差距,跟不上了,感到焦虑,你会如何处理一个考政治思想的问题,表现自己爱国爱党就行英文问题:Q:你怎么定义真正优秀的人(自我介绍的时候说到了,给自己挖坑)A:(半天憋出一句话,老师笑了一下 - - 然后说换个问题)Q:你能从哪些方面提升自己?A:(答了准备好的英文自我介绍中的研究计划)Q:你认为哪些性格让你成为优秀的学生A:(还是从英文自我介绍里抠出来了一些,说明一个完整的英文自我介绍多么重要)你参加过哪些比赛?都获得了什么结果呢?————————然后老师那边就断线了十几分钟————————get 和 post 的区别一直问项目体验还是挺不错的,老师都挺和善,就是那边声音有点听不清,一开始他们设备还坏了,面试一半之后耽误了十几分钟接着面试,最终顺利优营。武大后来也是有预推免的。南开大学计算机我们学校入营挺多的,面试合格的也挺多的。我进会议时没准备好,讲 PPT 超时于是潦草结束,总之前面有点拉跨。不过最后还是通过了。南开要先过学院关,再过实验室关才算正式 offer,我不是很想去就没有参加实验室面试 (听说实验室考核也比较硬核)。面试分了好几组进行,不同组的问的问题差距较大,比如我有同学那组问很多数学,我这组问项目偏多。下面是我的面试记录:英文对话 (ppt 故意没写研究兴趣,就是想让老师用英文问研究兴趣)Q:你研究生想做哪些方向A:大数据或人工智能 (hhh 大火方向,其实不太了解)Q:人工智能方向有很多,比如 lr, cv, nlp, rl 等,具体什么方向呢?A:nlpQ:你读过 nlp 相关的论文吗A:一开始以为老师说的是写论文,我答 NO,老师尬住了,我缓过来之后说 YesQ:可以介绍一篇你读过的论文吗(这个问题想到过,但没来得及准备。面完南开之后准补上看了,在之后很多次面试里我都用到这个来回答)A:两三句介绍完了……你的 bert 怎么微调的你说你的是 base 模型,为什么不用 large,它效果更好nlp 方向很多,你想做哪方面知不知道我们学院做知识图谱的老师哈工大深圳计算机网上看了哈深的图片,校园环境真不错!个人觉得是深圳三巨头中最好看的 (之后实地考察了进一步证实了我的看法)。而且近年来了很多厉害的导师,地域也很好,基本上什么互联网公司都有,所以在夏令营结束后,这是我拿到的最满意的 offer (每个人考虑的点不一样,我不是只看title)。一开始会有机试,几十个题,满分150,进入面试应该得 90+ 吧。面经 (20mins 左右):5 分钟PPT讲解,自我介绍用英文,其他部分可以用中文你的科研经历很广泛,很多方向都有,请问哪一个影响最深刻?你更偏向于做什么方向呢?看到你有北大实验室的经历,请问是什么情况下让你有了这样的契机还有报其他学校吗?(我说想在广东发展,就只说了中大)如果哈工大和中大同时给你 offer 你会如何选择分最高的一门专业课是啥?你认为自己学的最好的一门课?你从中收获了什么,学会了什么?对你的项目有什么帮助有什么兴趣爱好在 20 个题中(前面人抽了就没了)抽一道算法题,思考 3 分钟,口述思路感觉面试还是挺舒服的,因为没问太多专业课,最后 offer 了,在 8 月中旬才联系老师。刚开始联系的是 nlp 小牛导 x 老师,当时觉得实验室考核有点麻烦,我又在实习,估计没时间完成。于是换了另一个挺多 A、h37 的 x 老师,面试过后感觉老师还挺帅的,看着也年轻,很为学生考虑,完全没架子,当时还问我要不要去华为实习,哎可实习又注重科研,这谁能拒绝!当时就觉得除了 top2 和浙大就去哈深了!后来鸽老师的时候,老师一点架子也没有,还说“没事儿,反正还在一个校园里,有机会可以一起吃饭” (据说清北深和哈深可以课程互选、学分互认),而且他也认识我的导师,总之我超级推荐 x 老师!在填志愿那几天还看到老师又中了两篇 A,真的又好又强~!哈深也有预推免,并且分好几批,面试过程跟夏令营差不多,设有 wl。哈工大 nlp 是很厉害的,苏大的 zhang min 也到哈深来了,未来想做 nlp 的也可以考虑 z 老师或 x 老师组。中科大计算机中科大出入营结果的时候拖延了两次,第一次出结果时我们专业全军覆没…群里说联系老师就可以入营。于是我联系了一个 l 老师,l 老师回复非常及时,而且完全不是官方回复,他是真的会认真看你给他发的陶瓷信,甚至还找出了我陶瓷信中一个错误!当时说要是我确定去科大就去学院要人 (我认为要坦诚相待,不能因为想入营就欺骗老师)。我当时其实不确定,就说自己还报了哪些学校啥的,如果通过了会斟酌一下。但老师还是捞我了!第二次出入营结果时就有我的名字了,非常感谢老师!至于面试过程挺尴尬:自我介绍 5mins PPT对其中一个项目问了几个问题就没了???(感觉我那组人均10分钟) 凭印象大概是这样的对话,很尴尬:Q:你这个项目你的工作量怎么样A:是我自己一个人做的Q:代码量多少A:前后端加算法端加起来应该是几千?(这个问题没有准备过,当时瞎说的,大家一定要大致统计一下项目的代码量,因为这是体现你工作量的地方!)Q:你这个模型最后的精度怎么样?A:大概 0.85, 0.86 (我天,这个我忘记了,说了个大概的,结果面试完去看记录原来是 0.82 左右…尴尬了)Q:你有没有加入一些额外知识?我记得这个任务当时最高也就是你这个得分呀A:(大概就是说我不记得了之类的)Q:哦,你的意思是你不清楚你自己做的工作?A:(连忙解释确实是自己做的,有点久了忘记了。哎所以大家一定要对自己的项目做到面面俱到呀)Q:忘了… 反正就是尴尬到底科大也是要先过学院关还要再过老师关。于是面试结束后继续联系了 l 老师,老师让我复盘一下我的面试,并且做出了评价 (老师太好了)。他认为我的面试效果会不好,即使我是有能力的。这里总结一下老师的话“自我介绍的 PPT 里要体现自己所做的工作,例如写了哪些代码,代码量多少,看了哪些论文,完成了什么功能模块,要拿出证据出来,有什么收获。即使你只是改了一个代码,甚至是按着源码写了一个 CNN 也可以”。后来按老师所说的改了下 PPT,使用效果真的不错!最后出结果是在 wl 靠前,我就没继续找老师了,有种半放弃的状态。一直到九月时才被催着又重新联系了一个 p 老师,也通过了老师的考核,愿意给学硕。但我也告诉老师过几天会有 thu 的面试,如果过了我会去 thu,老师也理解我,说让我面完再告诉他。p 老师也是非常好的老师,跟他聊天的过程中让我学会了很多。科大 cs 好像没有预推免了,夏令营的 wl 挺长的 (100+),而且群主说 wl 都有机会补录到。北航计算机北航 cs 估计是所有学校里面流程最成熟,结果最公开的吧!第一天上午机试,两题两个小时,难度感觉是 LeetCode 中等和 PAT 甲级左右,对常见数据结构和算法熟练的话是有能力拿高分的 (个人认为 csp250+ 抵机试会高分,因为北航机试不算难的,除非编程基础非常差,200 分就抵机试吧)。下午就开始面试,好像一直到第二天都是面试,然后第二天晚上就出结果,一套流程下来特别顺畅。面试大概 13mins,还挺快:政治问题(10 个题抽一个回答)英文自我介绍(感觉老师没咋听)解释什么是边缘概率密度?什么是大数定律你认为,这些知识 (刚才问的那些数学) 在你的项目中有什么作用用 bert 干了什么操作系统中的页表是干啥用的一个编译好的程序的地址是什么地址编译好的程序到内存运行时,生成地址经过了几次转换ip 到 mac 地址是怎么转换的arp 请求 和 响应报文有什么区别问了一个天池竞赛是干什么的,自己参加的吗vue 前端的一个问题,v-if 和 v-show 的区别….忘了老师好像不会管你答得对不对,看面经就知道北航比较看重专业课和数学。面试完感觉挺好的,当天就有老师打电话给我,说是其中一个面试的老师,希望我加入他的课题组~北航夏令营是给外校的,所以预推免很多本校的参加。想上岸 buaa 最好直接报名夏令营,而且据说夏令营和预推免只能报一个。中山大学计算机中大负责招生的老师很负责任,还很可爱~ 入营挺多人的。先有机试,好像是 10 道题,面向对象、数据结构、算法等都有,我做的还可以。虽然说机试不加入成绩,但是我觉得还是有一定影响的。面经:英文问题,2 分钟说一下最喜欢的一门课自我介绍 PPT 5mins一直问项目操作系统进程和线程区别一个简单的有关数据库设计的题目内存中堆和栈的区别中大也是我高中时的梦校。但中大的面试没怎么准备,最后优营排名前 50,学硕锁定。没有联系老师。到后面九月时想试试联系 lin 佬的,但又觉得可能没名额了就打住了。最后在 9.20 左右放弃了优营名额。中大在后来也有预推免,不够预推免只剩专硕了。中大的 cv 是很强的,未来想做 cv 的不妨考虑下中大。华中科技大学华科夏令营开得非常晚,面试过程也很快,我们学校入营和优营都很多。自我介绍 2-3 分钟对自我介绍中的两个项目的都问了几个问题(好像都没用问技术问题)研究生计划在大学中有没有遇到难以解决的问题,最后是怎么解决的华科今年也是有预推免的,同学参加之后表示当场手撕堆维护代码。预推免情况学校 入营情况 原因 / 结果清华软件学院 ✓ 直博 offer。要交 100¥ 复试费。预推免门槛低于夏令营。情深大数据 ✗ 专硕 情深基本都是报专硕,然后报名官网状态显示我材料没交齐,于是无了…北大信科 ✗ 直博 报的直博,导师没有博士名额了,还是被拒了。北大深圳 ✓ 硕 offer (但是导师有sz学硕名额 )。北深只要导师要就可以入营,完全就是给你机会陶瓷的复旦大学计算机学院 ✗ 硕 软件就别想入营南大计算机 ✓ 硕 没消息,结果穿了 hhh浙大计算机 ✓ 硕 offer。cs 硕士外校入营 230 左右,我们学校入营的比去年多了。由于浙大开的太晚,最后鸽穿了… 浙软也鸽到了wl 100+浙大计算机浙大是我最后一个面的。我把它写在第一个是因为,在开始保研之前,清北这些我就没想过,最多觉得就是报个名体验体验,所以很长一段时间浙大 cs 才是我之前最想去的。但是浙大计算机夏令营只有直博实习,而且时间很长,当时就没考虑,直到夏令营才报。当时看去年的浙大 cs 预推免入营名单,我们院只有两个计科的同学,觉得十分惨淡。但还是抱着一丝希望报了 PAT,往年可以抵浙大的机试,从开始复习 PAT 一直到考试做了 30 来道题,最终很圆满的获得了满分,当时还是挺高兴的,结果最后 cs 没有机试… (虽然去年也没有)关于想刷 PAT 的同学推荐按这个网站复习,然后遇到不会的题可以参考一个在 liuchuo 的大佬的博客。在报名之前可以到这个网站去提交 20 道题就可以获得 50 元代金券浙大面试是 9.22 下午,上午正好是 pku 的面试,赶忙从深圳赶回家,开始面试的前 5 分钟才去网站上看面试流程…我心真大。当然也是因为有更好 offer 了,对我来说就是面个过场,过程不少于 20mins5 分钟左右PPT自我介绍,含 1 分钟左右英文英文问题:某项目用的什么模型,为什么只对我知识图谱的项目比较感兴趣,问了好几个问题,有些答不上(都说的是之后再研究……有点尬)线代:矩阵的逆的定义;伴随矩阵的定义;第三个问题是“求线性方程组,有个xxx,如果控制不好,求的结果会不稳定,xxxx?”,xxx忘记是啥了,我答的是“不好意思我没听过xxx”…问数据库索引的优缺点编程问题:超大数相加。一开始答的每一位存在数组里,模拟相加运算;他说耗内存,然后我就说存在字符串里。好像还有接着问,又好像直接结束了,忘了经常回答完都会静默一段时间,可能是我回答短了?反正我面的挺随意的。但总体面试氛围比南大好多了,也可能是因为我开了共享屏幕,看不见老师的表情是啥样的哈哈哈哈。反正面南大时我觉得老师都是冷冷的没表情好像很累似的…今年浙大 cs 硕士预推免 280+ 参加,拟录取 110+ 人左右,剩下的都是候补,浙大 cs 也是本校保护,去年录取名单中外校 cs 学硕 10- 人,se 学硕 20+ 人。由于浙大开的太晚,貌似鸽穿了,好像有wl前几都补到了 cs 学硕… 浙软也鸽到了wl 100+清华软件清华软件夏令营就挺后悔没参加的,想感受一下 thu 的气氛。我预推免时报直博是觉得外校的直博可能比较简单,毕竟清软夏令营只有直博,而且只有外校的参加。后来去查才知道,直博名额只有 20 来个,本校的人也是占一半;硕士名额差不多百个了,不过外校基本只有专硕。具体的大家可以直接网上搜往年录取公示。所以我觉得清软应该是硕士比较简单。我没有提前联系老师,本来没想报的,是在截止报名的前几个小时才报的,这也导致了我没看清楚情深的报名要求,导致情深材料没交齐…清软先有一场机试,今年机试题目不难,一共四个题 (题目我保存下来了),奈何我最后一题看着会却做不对。据群里的 acm 大佬说要用什么矩阵快速幂?好吧,那我估计不会。报直博的话会有两场面试,第一场是综合面试,第二场是专业面试。对于外校的同学,机试成绩*20% + 综合面试成绩*8% + 专业面试*72% 是最终成绩 (本校同学机试占 10%)。综合面试就是问一下素质品德等,比较好回答,比如为什么要读博 (一定要准备回答这个问题)。专业面试先有 5mins 自我介绍 (可以用 PPT),然后就是根据你的自我介绍问相关问题,涉及经历、项目、导师等。thu 老师感觉都很亲切~ 面试感觉挺好的,没两天就发 offer 了,导师在网上也没有言论,看近年所发的论文也算符合自己的兴趣,圆梦清华!北大深圳拿到 thu offer 那一刻,以为不再有变数。突然在 pku 实习时的导师问我愿不愿意先读学硕,保持成绩可转博。导师在信科直博名额很早就给本校了,听到可以读学硕我特别心动,立马答应。于是北深就给我补发了邮件,我当时没看到邮件,还打电话让我确认。在北深导师权力比较大,如果导师要你基本就稳了。所以我也没太多准备,推荐一个面经,面试流程和里面说到的差不多,可能还会遇到原题。面试是 9.22-9.23 线下,我是第一天上午面试,要求 7 点 20 之前到门口,所以前一天晚上就到深圳了。线下面试不要穿的太随意了,但我觉得也不用正装什么的太正式 (志愿者说穿拖鞋都可以…)。面试顺序是当天到场了才知道,我是上午第 2 个,面试完就可以闪人了~整个过程差不多 20mins英文自我介绍,2 分钟英文问答(好像是根据自我介绍问的)解释一下什么是语言模型抽题:数学类(求矩阵A的秩,带有参数,需要分类讨论)抽题:计算机基础类(一个程序运行在有 4 个 cpu 的计算机和只有 1 个 cpu 的计算机,是否前者比后者快4倍)抽题:编程类(三数之和,伪代码)抽综合类题,综合类题比较杂,可能包含计算或编程题,也有一些开放性题。闲聊:你是xxx大学的?你还面了哪些学校?(答挺多的,于是对面的学长笑了一下)你的那些面试都结束了吧?(我说下午还有浙大,老师还关心一句“那你来得急吗”,我说来得急hhhh)如果我们录取你,你会怎么选择?本来第一次线下面试会有点紧张,但氛围极好一点也不紧张。会先有志愿者领你到面试的地方。面试时对面大概 6/7 个人,一个老师专门负责英语,一个学长负责数学和编程,其他老师就是负责专业课或者其他综合性问题。面试完感觉还挺好的,最终 offer 了。我是挂在一个老师的名下,但实际上信科实验室的那个老师才是我的导师。第一年先在深圳学习,后两年待在北京科研,想想还是不错的。在一番思考过后,对直博还是有所犹豫,还是选择了 pku。南大计算机南大在报预推免之前联系了老师,然后跟学长聊过了几次,讲解过老师学生论文,说如果我通过南大,愿意给学硕。当时很大一部分是因为跟学长聊的不错,感觉实验室氛围会很好才想去南大的,不然已经没那么想去了。1min 左右英语自我介绍英语对话,介绍最喜欢的课程 (自我介绍时我说我是软件工程专业,老师问英文问题时,说我是计科专业…可见她没怎么听…)说一下软件测试,什么是白盒测试和黑盒测试,α 测试和 β 测试 (我的天,根本没准备过,第一个问题靠感觉答的,第二个问题当时根本不会)为什么有数据库范式,怎么判断不符合这些范式。。。等等 (第二个问题一直答得让老师不满意,我也不知道他到底要啥答案,也不给举例子…)介绍一个项目经历研究生期间周末要工作怎么看待三个老师,场子比较冷,一个负责主持和英语,两个负责问专业课。可以在自我介绍中提到一下自己强项课程,老师可能在后面问到。而且中间那个老师有严重的口音!他问的问题我都要让他重复好几遍我才听出来是啥!尴尬  ̄□ ̄面试完之后觉得挺凉的,不过也有一点开心,因为这样就不用鸽老师了。结果也确实一直没收到消息,学长也安慰我说没关系,以后可以去实验室实习哈哈。这里说一下南大 cs 专硕是没有宿舍的,身边挺多同学去了南大的。常见问题总结一下我在保研过程中遇到的一些问题,以及我的看法或解放方法。联系老师、鸽老师等模版参考一下这个仓库:https://github.com/yuezih/King-of-Pigeon一个老师问是否确定读xx学校,确定就捞你,但是你不一定去的情况要怎么回复在整个保研过程中,虽然学生和老师都会养鱼,但我还是会尽量坦诚相待。这时候我会表明自己很喜欢这个学校和老师,但是自己还报了 xx 学校 (比当前这所学校 title 好很多的比如报华五就说清北,报中九就说华五~),如果有机会入营并通过考核会有所斟酌。是否决定捞让老师自己决定。被问你还报了哪些学校?如果给你 offer 你会如何选择?在我有多个 offer 的时候,我只会说比当前学校 title 或实力低或者差不多的的学校,也或者我会说一些比当前学校要好的学校,但是解释说自己未来想在xxx地区发展,自己不是很想去那边等。同时联系多个老师好吗?老师不回邮件怎么办?联系好老师之后发现有更喜欢的老师怎么办?第一个问题虽然我没这么做过,但如果想尽快联系到一个老师,也不要联系同一个组的老师,有的老师会私下相互讨论。3 天不回可以考虑换其他实验室的老师。不过老师不回你邮件的话,联系同个组的应该也没事。最后一个问题我也遇到过,后来发现有更 的老师,我觉得我是会直接和原来的老师说研究方向感觉还是不合适之类的。毕竟读研还是要做自己喜欢的、合适的方向比较好,老师能理解。如何对比 offer 去哪个更好我的排序是:研究方向、导师 > 专硕/学硕/直博 > title > 地域、待遇。每个人排序不一样,一般从这几个方面去评判。提醒大家不要因为纯 title 耽误了自己的青春ENDING在 9.26 释放 thu 后,手里只剩一个 pku 的 offer 了,其实这里有点草率吧,感觉周围的同学都会留一个保底的 (留个保底比较好,万一呢)。而且在九推阶段上岸清北、捡漏 C9、华五完全有可能,可以填多几个学校再选择,何况今年很多学校还是穿了。今年的保研感觉比去年卷吧,很多人预推免都难以上岸,dalao 们人手几个 offer。最终身边的同学也都获得了理想的 offer,男朋友也去了北京 ~ 记得在计算机保研群里,9.28 就像新年一样,到点一群人一起喊“新年快乐”,不水群的我也发了一句 ,群友是真的很有意思。我认为想要通过初审,rk 是最重要的,尤其是报名人数多的学校,一个个筛选费时费力,直接看 rk 筛选是最暴力的。所以最重要的就是先保持成绩,然后就是各种项目或科研经历,最好是有完整的科研经历而且有产出,这样面试的时候大多数都会问你的科研成果就不问专业课啥的了。如果啥都没有也只能问专业课了对吧。有的同学会问如何平衡成绩和科研呢?我认为只能选择一个的时候,一定是成绩。在保持成绩前提下去拓展科研,不然营都入不了还保什么研 。我身边也有同学科研做的十分出色,导师也愿意接收,但是最后没有拿到保研名额。而且到那个时候再准备考研也是不太可能了。还有很重要的就是六级,有见过一些同学的六级没过导致有些学校不能报,或者说导师不要的情况。总的来说,我的保研路还是很佛的,每次都压线复习,好在预推免有较好结果。对我帮助最大的经历就是在 top2 的实习,认识了导师和学长,学长也会给你许多建议,也能让你更了解导师和实验室的工作。所以大家有机会一定要试试去 top 实习,不管是学术类还是工程类的,都会给你的保研加很大的 buff。最后的最后,我要感谢这一路支持和帮助我的同学、学长学姐和老师。也祝愿未来的保研人保研成功,上岸梦校!————————————————版权声明:本文为CSDN博主「inicho」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/qq_43280818/article/details/123450451
-
【功能模块】【操作步骤&问题现象】1、部署完成鲲鹏性能分型插件2、Java性能分析添加了目标环境3、添加了ca证书并且重启了vscode4、点击在线分析和采样分析均不行并且还是弹出保存ca证书页面【截图信息】【日志信息】(可选,上传日志内容或者附件)
-
【功能模块】【操作步骤&问题现象】1、部署完成鲲鹏性能分型插件2、Java性能分析添加了目标环境3、添加了ca证书并且重启了vscode4、点击在线分析和采样分析均不行并且还是弹出保存ca证书页面【截图信息】【日志信息】(可选,上传日志内容或者附件)
-
一、前言首先是笔试形式:监考:单摄像头、手机扫码监考(只能使用内置计算器)题目:15道选择+3道编程要求:选择题期间不能离开页面,编程题可以使用自己的编译器,采用ACM模式。选择和编程分为两部分,答题结束后才能开始下一阶段,且不能再查看已提交部分。与上一次笔试了解到的信息差不多,选择题方向比较多,java、计网、线程、数学等等方面都有出到。还是以蒙为主,甚至还有求数学期望(乐,如果我在高三…但现在…三碗饭!)编程题方面难度一般,难点在于溢出和剪枝,在题干和解题方式上并没有为难。这里先说说溢出,其实打过几次比赛的朋友一定知道,溢出其实是很常见的坑,这里再给这次踩坑了的朋友们提个醒,看到没超时没报错却有很多点过不了的情况,别去算给的范围会不会溢出,先试着换个long,没准就过了。二、编程题注意:题目中的注释都是笔试结束后加的,可能有问题,大家参考即可。第一题题目: 给定一个矩阵,选出一个边长大于等于2的正方形,让它四个角之和最大。思路: 直接尝试三个循环遍历,变量为边长k、当前坐标(i,j),就能遍历所有可能的四个角的组合,暴力求最大即可。发现过了40%,考虑改成long即可(下面代码中使用了BigDecimal,使用long应该也是没问题的)。第一题也算用整整60%的点,给到一个思路——注意溢出。不过,要是一直没注意到溢出的话,三道题可能会丢掉差不多三分之一的分,个人感觉这么出题还是不太合理的。import java.math.BigDecimal;import java.util.*;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int m = sc.nextInt(); int[][] num = new int[n][m]; //初始化数组 for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ num[i][j] = sc.nextInt(); } } //记得题干中约束了m和n,此处不加大概也行 if(m<2||n<2){ System.out.println(0); return; } BigDecimal ans = new BigDecimal(0); int maxLength = Math.min(n,m); //三层遍历:遍历所以四个角的组合 for(int k=1;k<maxLength;k++){ for(int i=0;i<n;i++){ //i+k>=n会越界,提前结束 if(i+k>=n) break; for(int j=0;j<m;j++){ //j+k>=m会越界,提前结束 if(j+k>=m) break; //求和,求最大 BigDecimal sum = new BigDecimal(0); sum = sum.add(new BigDecimal(num[i][j])); sum = sum.add(new BigDecimal(num[i][j+k])); sum = sum.add(new BigDecimal(num[i+k][j])); sum = sum.add(new BigDecimal(num[i+k][j+k])); if(sum.compareTo(ans)>0){ ans = sum; } } } } System.out.println(ans); }}第二题题目: 给定x,y,a,b四个数,用a乘x或y,找到让a等于b的最小次数,无结果输出-1。思路: 应该比较容易的就能拿到93%,剩下的7%要靠剪枝拿到。可以让a先乘x和y中大的那个,这样,得到的第一个结果一定是次数最小的。这样就可以排除剩下的结果,直接return即可。注意还是要用long。import java.util.*;public class Main { static long ans = Integer.MAX_VALUE; //flag:记录是否找到结果 static boolean flag = false; public static void main(String[] args) { Scanner sc = new Scanner(System.in); long x = sc.nextInt(), y = sc.nextInt(), a = sc.nextInt(), b = sc.nextInt(); //让a先乘xy中较大的 if(x>=y){ fun(x, y, a, b, 0); }else{ fun(y, x, a, b, 0); } if(ans==Integer.MAX_VALUE){ System.out.println(-1); }else{ System.out.println(ans); } } private static void fun(long x, long y, long a, long b, long num){ //flag为true,说明已经找到了结果,其他的情况可以直接排除 if(flag) return; if(a>b){ return; } if(a==b){ //这一步多余,当时没有注意,直接ans = num就行。 ans = Math.min(ans, num); //标记 flag = true; return; } fun(x, y, a*x, b, num+1); fun(x, y, a*y, b, num+1); }}第三题题目: n个城市,每个城市包含距离x,快乐值y。小明想去任意个城市,找出一些城市,满足其中任意两个城市之间距离小于k,快乐值的和最大,输出快乐值和。思路: 这道题用滑动窗口,评论区有朋友问为什么用滑动窗口,个人感觉首先是从一个不确定范围中找目标值,并且左右边界的变化也是不确定的,大概就是要用滑动窗口吧,希望有明白的朋友能详细解答一下。整体思路就是先给二维数组按距离排序,窗口的边界差小于k,那么范围内任意两个距离的差一定也是小于k的。然后如果大于等于k了,左边界移动,小于k则移动右边界,继续扩大范围。在这个过程中随着边界改变记录范围内快乐值的总和,找到最大值。同样记得使用long。import java.util.*;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(), k = sc.nextInt(); int[][] num = new int[n][2]; for(int i=0;i<n;i++){ num[i][0] = sc.nextInt(); num[i][1] = sc.nextInt(); } //按距离排序 Arrays.sort(num, new Comparator<int[]>() { @Override public int compare(int[] o1, int[] o2) { return o1[0]-o2[0]; } });// for(int i=0;i<n;i++){// System.out.println(num[i][0]+" "+num[i][1]);// } int L = 0, R = 0; long sum = 0, ans = 0; while(L<n&&R<n){ //差值大于等于k,该移动左边界缩小范围了 if(num[R][0]-num[L][0]>=k){ sum -= num[L][1]; L++;// System.out.println("-="+L); continue; } //差值小于k,继续扩大范围,寻找更大的结果 sum += num[R][1];// System.out.println("+="+R); ans = Math.max(ans, sum); R++; } System.out.println(ans); }}好了,这就是本此蔚来笔试的一些个人理解,以及三道编程题的解题思路,希望参加了面试的朋友能拿到面试机会,还没参加的朋友能有所收获。最后祝大家都能早日拿到心仪的offer~————————————————版权声明:本文为CSDN博主「OAOII」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/OAOII/article/details/125772091
-
需求公司数据统计报表查询,几张大表关联查询,包含跨库查询,数据联查,数据过滤,数据统计。问题主表数据1 主表数据2 … 统计数据1 统计数据2 …数据 数据 数据 数据 报表结构是主表数据+统计数据,只查主表数据速度很快,统计数据需要跨库联查,且表数据量大,拖慢了速度。一开始的做法是,每次分页请求都先获取主表list,再foreach主表list,根据主表字段去查询统计数据并进行计算,再合并到主表进行返回,查询速度不理想。分页查响应时间=1次主表查询时间+10次统计数据查询时间思路复杂的报表数据统计不应全部由DB层面去解决,而是SQL仅负责数据过滤,返回统计所需的字段,SQL尽量简单高效,service层拿到DB返回的结果集,由代码层面去进行较为复杂的数据合并与统计。最总给到前端的是一个分页,那么优化的话是基于分页去进行,分页10条,线程池开启10个线程去并行查询,最总汇总返回给前端。分页查响应时间=1次主表查询时间+1次统计数据查询时间(10条中最慢的一条)代码线程池工具类package com.youxue.weliao.utils;import com.google.common.util.concurrent.ThreadFactoryBuilder;import lombok.extern.slf4j.Slf4j;import java.util.concurrent.Future;import java.util.concurrent.LinkedBlockingQueue;import java.util.concurrent.ThreadPoolExecutor;import java.util.concurrent.TimeUnit;/** * @Author lhy * @Date 2022/5/13 */@Slf4jpublic class ThreadUtil { private volatile static ThreadUtil threadUtil; private ThreadPoolExecutor executor; /** * 单例 */ private ThreadUtil() { } public static ThreadUtil getThreadUtilInstance() { if (null == threadUtil) { synchronized (ThreadUtil.class) { if (null == threadUtil) { threadUtil = new ThreadUtil(); } } } return threadUtil; } /** * 提交任务 * * @param task */ public Future<?> submit(Runnable task) { if (executor == null) { // 初始化线程池 executor = initialize(); } // 执行线程 return executor.submit(task); } /** * 初始化线程池 * * @return */ private synchronized ThreadPoolExecutor initialize() { ThreadPoolExecutor executor = new ThreadPoolExecutor(10, 10, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(1024), new ThreadFactoryBuilder() .setNameFormat("task-admin-getlist--%d") .build(), new ThreadPoolExecutor.CallerRunsPolicy()); log.info("===================>ThreadUtil线程池初始化"); return executor; } /** * 关闭线程池 */ public void shutdown() { if (executor != null) { executor.shutdown(); } }}service层实际调用,这里我就不把全部业务代码放出来了,简化后如下 @Override public IPage<ManageDto> getManageDto(IPage<ManageDto> page, String str, String end, List<Integer> taskAdminIds) { // 主表查询 IPage<ManageDto> manageDtos = baseMapper.getManageDto(page, str, end, taskAdminIds); if (manageDtos.getTotal() > 0) { // 主表查询结果集 List<ManageDto> manageDtoList = manageDtos.getRecords(); // 异步线程Future集合 List<Future<?>> futures = new ArrayList<>(); for (ManageDto manageDto : manageDtoList) { // 本页有几条数据便开启几条线程去进行统计数据查询 futures.add(ThreadUtil.getThreadUtilInstance().submit(() -> { // 统计数据查询 List<ManageVo> manageVos = groupCyberArmyService.getManageVos(manageDto.getProcessAdminUserId(), manageDto.getTaskAdminId()); // 业务逻辑运算后合并到主表Dto })) } this.waitFinish(futures); manageDtos.setRecords(manageDtoList); return manageDtos; } return null; } /** * 线程池内线程是否已全部执行结束 * * @param futures 异步线程Future集合 */ @SneakyThrows private void waitFinish(List<Future<?>> futures) { for (Future<?> future : futures) { future.get(); } }解析future.get方法线程池线程是异步提交的,但是返回分页结果是需要同步返回,Future的get是个阻塞方法。只有所有的任务全部完成,我们才能用get按照任务的提交顺序依次返回结果,调用future.get()方法查看线程池内所有方法是否已执行完成,达到线程异步提交,结果集同步返回的效果。线程池工具类单例就不多解释了,这里用的是DCL单例,线程池根据自身需求配置核心线程等参数。————————————————版权声明:本文为CSDN博主「幸福往往是摸得透彻」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/weixin_43840809/article/details/124767908
-
1. 概念多态是面向对象程序设计(OOP)的一个重要特征,指同一个实体同时具有多种形式,即同一个对象,在不同时刻,代表的对象不一样,指的是对象的多种形态。可以把不同的子类对象都当作父类来看,进而屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,统一调用标准。比如,你的女盆友让你买点水果回来,不管买回来的是苹果还是西瓜,只要是水果就行,这个就是生活中多态的体现再比如,小猫、小狗、小猪我们可以把他们都归纳成小动物,每种小动物都需要吃东西,所以我们可以统一设置他们都必须吃,但是每种小动物的习性不一样,那这个就可以设置成小动物自己特有的功能,多态对象只能调用父类中定义子类中重写的功能,并不能调用子类的特有功能,这样就实现了代码的统一2 . 特点多态的前提1:是继承多态的前提2:要有方法的重写父类引用指向子类对象,如:Animal a = new Cat();多态中,编译看左边,运行看右边3. 练习:多态入门案例创建包: cn.tedu.oop创建类: TestDemo.javapackage cn.tedu.oop2;/*本类用作多态的入门案例*/public class TestDemo { public static void main(String[] args) { //6.创建“纯纯的”对象用于测试 Animal a = new Animal(); Cat c = new Cat(); Dog d = new Dog(); a.eat();//小动物Animal吃啥都行~调用的是父类自己的功能 c.eat();//小猫爱吃小鱼干~调用的是子类重写后的功能 d.eat();//小狗爱吃肉骨头~调用的是子类重写后的功能 /*2.父类对象不可以使用子类的特有功能*/ //a.jump();//报错,Animal类里并没有这个方法 //a.run();//报错,Animal类里并没有这个方法 c.jump();//小猫Cat跳的老高啦~,子类可以调用自己的功能 d.run();//小狗Dog跑的老快啦~,子类可以调用自己的功能 //7.创建多态对象进行测试 /*3.口诀1:父类引用指向子类对象 * 解释:创建出来的子类对象的地址值,交给父类类型的引用类型变量来保存*/ Animal a2 = new Cat();//Cat类对象的地址值交给父类型变量a2来保存 Animal a3 = new Dog();//Dog类对象的地址值交给父类型变量a3来保存 //8.测试多态对象 /*4.口诀2:编译看左边,运行看右边 * 解释:必须要在父类定义这个方法,才能通过编译,把多态对象看作是父类类型 * 必须要在子类重写这个方法,才能满足多态,实际干活的是子类*/ a2.eat();//小猫爱吃小鱼干~,多态对象使用的是父类的定义,子类的方法体 }}/*1.多态的前提:继承+重写*///1.创建父类class Animal{ //3.创建父类的普通方法 public void eat(){ System.out.println("小动物Animal吃啥都行~"); }}//2.1创建子类1class Cat extends Animal{ //4.1添加重写的方法 public void eat(){ System.out.println("小猫爱吃小鱼干~"); } //5.1添加子类的特有功能 public void jump(){ System.out.println("小猫Cat跳的老高啦~"); }}//2.2创建子类2class Dog extends Animal{ //4.2添加重写的方法 @Override public void eat(){ System.out.println("小狗爱吃肉骨头~"); } //5.2添加子类的特有功能 public void run(){ System.out.println("小狗Dog跑的老快啦~"); }}4. 多态的好处多态可以让我们不用关心某个对象到底具体是什么类型,就可以使用该对象的某些方法提高了程序的可扩展性和可维护性5. 多态的使用前提:多态对象把自己看做是父类类型成员变量: 使用的是父类的成员方法: 由于存在重写现象,所以使用的是子类的静态成员: 随着类的加载而加载,谁调用就返回谁的6. 练习:多态成员使用测试创建包: cn.tedu.oop创建类: TestDemo2.javapackage cn.tedu.oop2;/*本类用于测试多态成员的使用情况*/public class TestDemo2 { public static void main(String[] args) { //7.创建纯纯的子类对象 Dog2 d = new Dog2(); System.out.println(d.sum);//20,子类自己的属性 d.eat();//小狗爱吃肉包子,子类自己的方法 //8.创建多态对象 /*口诀1:父类引用指向子类对象*/ /*口诀2:编译(保存)看左边,运行(效果)看右边*/ Animal2 a = new Dog2(); /*多态中,成员变量使用的是父类的*/ System.out.println(a.sum);//10 /*多态中,方法的声明使用的是父类的,方法体使用的是子类的*/ a.eat();//小狗爱吃肉包子 /*多态中,调用的静态方法是父类的,因为多态对象把自己看作是父类类型 * 直接使用父类中的静态资源*/ a.play();//没有提示,玩啥都行~ Animal2.play(); }}//1.创建父类class Animal2{ //3.创建父类的成员变量 int sum = 10; //4.创建父类的普通方法 public void eat(){ System.out.println("吃啥都行~"); } //9.1定义父类的静态方法play public static void play(){ System.out.println("玩啥都行~"); }}//2.创建子类class Dog2 extends Animal2{ //5.定义子类的成员变量 int sum = 20; //6.重写父类的方法 @Override public void eat(){ System.out.println("小狗爱吃肉包子"); } //9.2创建子类的静态方法play //@Override /*这不是一个重写的方法,只是恰巧在两个类中出现了一模一样的两个静态方法 * 静态方法属于类资源,只有一份,不存在重写的现象 * 在哪个类里定义,就作为哪个类的资源使用*/ public static void play(){ System.out.println("小狗喜欢玩皮球~"); }}7 拓展7.1 设计汽车综合案例创建包: cn.tedu.oopexec创建类: DesignCar.javapackage cn.tedu.oop2;/*本类用于完成汽车设计案例*/public class DesignCar { public static void main(String[] args) { //9.创建一个纯纯的父类对象进行测试 Car c = new Car(); System.out.println(c.getColor());//null c.start(); c.stop(); //c.swim();//报错,父类对象不可以调用子类的特有功能 //10.创建纯纯的子类对象做测试 BMW b = new BMW(); System.out.println(b.color);//五彩斑斓的黑 System.out.println(b.getColor());//null b.start();//都让开,我的车要起飞啦~ b.stop();//唉呀妈呀熄火了~ //11.创建多态对象进行测试 Car c2 = new TSL(); //System.out.println(c2.color); System.out.println(c2.getColor()); c2.stop(); c2.start(); //c2.swim(); }}//1.通过分析,抽象形成一个汽车类class Car{ //2.定义并封装汽车类的属性--成员变量 private String brand;//品牌 private String color;//颜色 private int id;//编号 private double price;//价格 //3.定义功能 public void start(){ System.out.println("我的小车车启动啦~"); } public void stop(){ System.out.println("唉呀妈呀熄火了~"); } public String getBrand() { return brand; } public void setBrand(String brand) { this.brand = brand; } public String getColor() { return color; } public void setColor(String color) { this.color = color; } public int getId() { return id; } public void setId(int id) { this.id = id; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; }}//4.创建子类class BMW extends Car{ String color = "五彩斑斓的黑"; //5.重写父类的方法 @Override public void start(){ System.out.println("都让开,我的车要起飞啦~"); }}//6.创建子类2class TSL extends Car{ //7.重写父类的方法 @Override public void stop(){ System.out.println("唉呀妈,怎么停不下来呢"); } //8.添加子类的特有功能 public void swim(){ System.out.println("没想到吧,我还是个潜水艇"); }}7.2 多态为了统一调用标准package cn.tedu.oop2;public class TestFruit { public static void main(String[] args) { Fruit f = new Fruit(); Apple a = new Apple(); Orange o = new Orange(); get(f); get(a); get(o); } //只需要创建一个方法,就可以执行截然不同的效果 //忽略子类对象的差异统一看作父类类型 public static void get(Fruit f){ f.clean(); }}class Fruit{ public void clean(){ System.out.println("水果要洗洗再吃"); }}class Apple extends Fruit{ @Override public void clean(){ System.out.println("苹果需要削皮"); }}class Orange extends Fruit{ @Override public void clean(){ System.out.println("橙子需要剥皮"); }}7.3 静态变量和实例变量的区别在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。7.4 向上转型和向下转型在JAVA中,继承是一个重要的特征,通过extends关键字,子类可以复用父类的功能,如果父类不能满足当前子类的需求,则子类可以重写父类中的方法来加以扩展。那么在这个过程中就存在着多态的应用。存在着两种转型方式,分别是:向上转型和向下转型。向上转型:可以把不同的子类对象都当作父类来看,进而屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,统一调用标准。比如:父类Parent,子类Child父类的引用指向子类对象:Parent p=new Child();说明:向上转型时,子类对象当成父类对象,只能调用父类的功能,如果子类重写了父类中声明过的方法,方法体执行的就是子类重过后的功能。但是此时对象是把自己看做是父类类型的,所以其他资源使用的还是父类型的。比如:花木兰替父从军,大家都把花木兰看做她爸,但是实际从军的是花木兰,而且,花木兰只能做她爸能做的事,在军营里是不可以化妆的。向下转型(较少):子类的引用的指向子类对象,过程中必须要采取到强制转型。这个是之前向上造型过的子类对象仍然想执行子类的特有功能,所以需要重新恢复成子类对象Parent p = new Child();//向上转型,此时,p是Parent类型Child c = (Child)p;//此时,把Parent类型的p转成小类型Child其实,相当于创建了一个子类对象一样,可以用父类的,也可以用自己的说明:向下转型时,是为了方便使用子类的特殊方法,也就是说当子类方法做了功能拓展,就可以直接使用子类功能。比如:花木兰打仗结束,就不需要再看做是她爸了,就可以”对镜贴花黄”了————————————————版权声明:本文为CSDN博主「程序媛 泡泡」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/weixin_43884234/article/details/116593803
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签