首页 > 编程语言 >2023年SHEIN的JAVA后端实习笔试题

2023年SHEIN的JAVA后端实习笔试题

时间:2023-04-25 10:59:34浏览次数:44  
标签:10 var1 var2 SHEIN fast 索引 resList 2023 JAVA

2023年SHEIN笔试题目:
10道单选,5道多选,一道算法,一道SQL
(单选)
1、下列关于线性链表的叙述中,正确的是:
进行插入和删除时,不需要移动链表中的元素。
2、关于以下程序代码的说明正确的是:
class HasStatic{
private static int x = 100;
public static void main(String args[ ]){
HasStatic hs1 = new HasStatic();
hs1.x++;
HasStatic hs2 = new HasStatic();
hs2.x++;
hs1=new HasStatic();
hs1.x++;
HasStatic.x--;
System.out.println( "x=" +x);
}
}
正常编译,输出结果:x=102
访问的是同一个x,静态变量存储在方法区
3、下列不属于hash碰撞解决方法的是
单旋转法
4、系统为某进程分配了4个页框,该进程已访问的页号序列为2,0,2,9,3,4,2,8,2,4,8,4,5。
若访问的下一页的页号为7,依据LRU算法,应淘汰的页的页号是:
2
最近最少使用算法
5、进程P1和P2,资源A和B,进程对资源的操作定义如下:读取资源A:rA;读取资源B:rB;写入资源A:wA;写入资源B:wB。
同时规定,进程读取某一资源前,必须加上共享锁,写入某一资源前必须加上排他锁;
资源在被进程加共享锁时,可以被其他进程继续加共享锁,但不能加排他锁;资源在被进程加排他锁时,其他进程无法加锁。
进程完成全部操作后释放锁。进程P1和进程P2并发执行,如下哪种运行序列可能会出现死锁
P1(WB->rA),P2(WA->rB)

6、判断以下代码的输出结果:
public class text01 {
public static void main(Stringl args) (
Integer var1 = new Integer(1);
Integer var2 = var1;
doSomething(var2);
System.out.print(var1.intValue());
System.out.print(var1 == var2);
}
public static void doSomething(lnteger integer){
integer = new Integer(2);
}
}
1true
在这段代码中,首先创建了一个lnteger 对象 var1,并将其赋值给var2。
然后将 var2 作为参数传递给 doSomething 方法。在 doSomething 方法内部,创建了一个新的 lnteger 对象并将其赋值给 integer 参数。
由于 Java 中的参数传递是按值传递的,因此这里的赋值操作只会影响到 integel参数本身,而不会影响到 var2 或 var1。
因此,当doSomething 方法返回后,var2 和 var1 的值仍然是原来的值,即 1。
而var1 == var2 的结果为 true,这是因为 var2 和 var1引用的是同个 Integer 对象,它们的地址相同,
所以,输出结果为 1和 true。
7、下面关于HTTP/2的描述错误的是:
HTTP/2是以安全为目标的HTTP通道,简单讲就是HTTP的安全版。即HTTP下加入SSL层
这是指HTTPS
8、mysql 数据库有选课表 learn(student_id int,course_id int),字段分别表示学号和课程编号,
现在想获取每个学生所选课程的个数信息,请问如下的 sql 语句正确的是( )
select student_id,count(course_id) from learn group by student_id
9、以下数据结构哪一个是非线性结构?
二叉树
10、spring事务的传播特性,错误的是
PROPAGATION_REQUIRED:支持当前事务,如果当前没有事务,就抛出异常。
是新建一个事务,不是抛出异常。

(多选)
11、关于下面一段代码,以下说法正确的是
public class Test {
private synchronized void a() {
}
private void b() {
synchronized (this) {
}
}
private synchronized static void c() {
}
private void d() {
synchronized (Test.class) {
}
}
}
同一个对象,分别调用方法a和b,锁住的是同一个对象
同一个对象,分别调用方法b和c,锁住的不是同一个对象
考察synchronized关键字
同步实例方法和同步代码块是锁this对象
同步静态方法是锁的是运行时类,即Test.class
12、如下哪些sql语句查询能较好的利用索引
create table T{
id not null auto_increment,
a date ,
b varchar(10),
c varchar(20),
d varchar(10),
primary key(id),
key_index(a desc,b desc),
key(b),
key(c),
key(d)

}
A、select b from T where b like "bbb%"
B、select a,b from T where a='2015-10-15' order by b asc
C、select a,b,c from T where a='2015-10-15' order by a asc,b asc
D、select a,b,c from T where a='2015-10-15' order by b,c
ABC
A、可以使用 b 索引来加速 LIKE 查询,因为 b 索引是对 b 列的查询索引。但是需要注意,由于 LIKE 匹配时要进行模式匹配,所以在实际应用中可能会有一定的性能开销,不建议使用“%bb”的匹配方式。
B、可以使用 key_index(a desc,b desc) 索引来优化查询。根据索引定义可知,该索引的第一个键是 a,第二个键是 b,而且两个键都是倒序排列。所以在查询时,可以利用该索引将符合条件 a='2015-10-15' 的记录按照 b 列正序排序。
C、同样可以使用 key_index(a desc,b desc) 索引来优化查询。根据索引定义可知,该索引的第一个键是 a,第二个键是 b,两个键都是正序排列。所以在查询时,可以利用该索引将符合条件 a='2015-10-15' 的记录先按照 a 列正序排序,对于相同的 a 值则按照 b 列正序排序,最后返回 a、b、c 三列的数据。
D、不能充分利用已有的索引来优化查询。虽然表 T 中有 b、c 两列的索引,但没有包含 a 列,且查询条件中只涉及到了 a 列的过滤条件,所以无法使用任何已有的索引来执行查询。在实际应用中可能会导致全表扫描的情况,性能较差。

13、两个线程并发执行以下代码,假设a是全局变量,那么以下输出___哪个是可能的?
int a=1;
void foo(){
++a;
printf("%d", a);
}
A 3 3
B 3 2
C 2 3
D 2 2
ABCD
考察++自增为啥不能保证原子性

14、JDK17有以下哪些特性?
A、ZGC
B、协程
C、CMS GC
D、Sealed Class
AD
Sealed Class这个特性被引入,并且可以被用来限制哪些类可以继承和实现该类

15、解决hash冲突的方法描述错误的有?
A、开放定址法解决冲突的做法是:当冲突发生时,使用某种探查(亦称探测)技术在散列表中形成一个探查(测)序列。
沿此序列逐个单元地查找,直到找到给定 的关键字,或者碰到一个开放的地址(即该地址单元为空)为止。
B、拉链法解决冲突的做法是: 将所有关键字为同义词的结点链接在同一个单链表中
C、拉链法处理冲突简单,且无堆积现象,即非同义词决不会发生冲突,因此平均查找长度较短
D、当结点规模较大时,开放定址法较为节省空间
AD
开放定址法确实是一种解决哈希冲突的方法,但它的做法并非"形成一个探查(测)序列"。
开放定址法的做法是:当发生哈希冲突时,通过某种算法计算出一个新的地址,并检查该地址是否已经被使用。
如果该地址已经被占用,就继续计算下一个新地址,直到找到一个空闲的地址为止。
具体的探测算法包括线性探测、二次探测、双重散列等。
在开放定址法中,通过不断探测新的地址,直到找到可用的空间来安置冲突的关键字,从而避免哈希冲突。

(算法题)
16、最长不重复字符的子字符串数组(滑动窗口)(题目有点忘记了,力扣有类似的题)

示例一:输入:"abcdabcde"
输出:["abcde"]
长度:5(便于理解,自己加的)
示例二:输入:"abcdabcd"
输出:["abcd","bcda","cdab","dabc","abcd"]
长度:4
示例三:输入:"sheinerintervyw"
输出:["intervyw"]
长度:8

public String[] maxLenString(String str){
             int len = str.length();
                List<String> resList = new ArrayList<>();
                if(len <= 1){
                    resList.add(str);
                    return resList.toArray(new String[0]);
                }
                int fast = 0, slow = 0;   //滑动窗口的两个指针
                Map<Character,Integer> map = new HashMap<>();
                resList.add(str.substring(slow,fast+1));
                for (; fast < len; fast++) {
                    if(map.containsKey(str.charAt(fast))){
                        slow = map.get(str.charAt(fast)) + 1;
                    }
                    map.put(str.charAt(fast),fast);
                    if(fast - slow + 1 > resList.get(0).length()){
                        resList.clear();
                        resList.add(str.substring(slow,fast+1));
                    }else if(fast - slow + 1 == resList.get(0).length()) {
                        resList.add(str.substring(slow, fast + 1));
                    }
                }
             return resList.toArray(new String[0]);
}
                            

(SQL题)

17、某乎问答11月份日人均回答量
请你统计11月份日人均回答量(回答问题数量/答题人数),按回答日期排序,结果保留两位小数

select  answer_date,round(count(issue_id)/count(distinct author_id),2) as per_num
from answer_tb group by answer_date order by answer_date

 

答案是自己笔试完总结的,仅供参考,欢迎大家评论指正!!!

标签:10,var1,var2,SHEIN,fast,索引,resList,2023,JAVA
From: https://www.cnblogs.com/wjjnzn/p/17351950.html

相关文章

  • Android JAVA连接MQTT,以及常见问题
    本文介绍如何使用Android(JAVA)客户机连接MQTT服务器第一步先引入MQTT在 build.gradle添加以下:dependencies{implementation'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.1.0'}接下来演示如何连接创建MQTT客户机类 MqttConnect.classpublicclassMqtt......
  • java面试题--Spring
    一、Spring、SpringMVC、SpringBoot的区别是什么?二、????三、SpringMVC工作流程是什么?1、DispatcherServlet接收请求,将请求发给HandlerMapping;2、HandlerMapping根据请求url,匹配到要处理的handler,并包装成处理器执行链,返回给DispatcherServlet。3、DispatcherServlet根据处理器......
  • 【20230424】logstash生产开发总结汇总
    logstash生产开发总结汇总本文主要讲使用Logstash生产开发操作、遇到问题及处理时间:20230424logstash版本:logstash7.8.1官网:https://www.elastic.co/cn/logstash/目录logstash生产开发总结汇总一、基础开发简单的启动脚本字段过滤解析Json嵌套时间转换类templa......
  • 比较Python与Java在类的定义、继承、多态等方面的异同
    首先我来进行介绍Python与Java在类的定义、继承、多态等方面的异同1.python类和java类的使用一览java:publicclassCar{privateStringcolor;privateStringmodel;privateintyear;publicCar(Stringcolor,Stringmodel,intyear){......
  • Java 反射机制的一个简单例子.
    一、什么是反射:反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。这一概念的提出很快引发了计算机科学领域关于应用反射性的研究。它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩。其中LEAD/LEAD++、Open......
  • java中使用RedisTemplate读取数据异常 Missing type id when trying to resolve subt
    java中使用RedisTemplate读取数据异常Missingtypeidwhentryingtoresolvesubtypeof[simpletype,classjava.lang.Object]:missingtypeidproperty'@class'at[Source:(byte[])"报错:Causedby:com.fasterxml.jackson.databind.exc.InvalidTypeIdExcep......
  • java 分词统计
    依赖(谷歌基于lucene的中文分词IKAnalyzer)<dependency><groupId>org.wltea</groupId><artifactId>ikanalyzer</artifactId><version>5.0.2</version></dependency><dependency><groupId>org.apache.lucen......
  • 全球首发:Tiny10 2023 x86最终版及类似win10精简版/Win K/N版 单独添加Windows Media P
    情况:1.Windows功能列表中没有媒体功能(MediaFeatures),或该项下没有Windowsmediaplayer选项2.普通在Windows-设置-功能-可选功能中单独可以添加WMP,但实际并无效果,该组件需要相关功能包打开情况下才可以安装成功,否则尽管显示已安装,但实际Program目录下并无WindowsMediaPlayer出......
  • 5月腾冲 | 2023年易智瑞遥感应用培训班报名开启
    传递遥感技术助力遥感应用2023年易智瑞遥感应用培训班—5月腾冲站 主办单位易智瑞信息技术有限公司培训简介遥感应用培训班自2009年启动以来,已经举办了14年。已先后在20多个城市举办了120多场培训,共有7000多名学员参加。每年培训班内容都会根据学......
  • JavaScript回调函数
    一种场景js需要等待一个函数执行完后再执行另一个函数或者其他的操作。本编以最简单的例子来说明回调函数的执行过程。回调函数备注上就是以函数对象作为参数进行传递。demo<!DOCTYPEhtml><html><head><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"/>......