商汤科技

java基本上问的都是多线程的问题

一、java中int存储字节数:

1、1字节(byte)= 8位(bit)

2、整型:short 2字节、int 4字节、long 8字节

3、浮点型:float 4字节、double 8字节

4、char类型:2字节

5、Boolean 1字节

二、java字符串编码:默认的是Unicode,当需要改变时,可以String.getBytes。

三、集合的关系

四、叙述垃圾回收的两种算法,叙述原理,并说明特点

1、标记清除算法:算法分为标记和清楚两个阶段:首先标记出所需要回收的对象,标记完成后统一回收。标记算法包括引用计数算法和可达性分析算法。特点:效率不高 2. 会产生大量不连续的内存和碎片

2、标记整理算法:和标记清除方法类似,不过在标记之后不是直接回收,而是让所有存活的对象都向一端移动。然后直接清理掉端边界以外的内存。

3、复制算法:将可用内存按容量划分为大小相等的两块,每次只是用一块,当这一块内存用完了,则将还存活的对象复制到另外一块,再把已使用过的内存空间一次清理掉。这样每次都是对整个半区进行内存回收 优点:效率提升,且不用考虑内存碎片问题。缺点,内存缩小了原来的一半

4、分代搜集算法:根据对象的存活周期的不同把内存划分为几块。一般把堆划分为新生代和老年代。然后根据不同代的特点进行收集。新生代采用复制算法,老年带采用标记清理和标记整理算法。

五、HashMap的底层实现,如果是你的话怎么实现。

(这个链接里的内容感觉很不错,可以参考一下)https://www.cnblogs.com/chengxiao/p/6059914.html

六、线程两种实现方式,以及之间的区别,为什么说实现runnable接口方式较好?

1、继承thread类。

这种方式通过自定义直接extend thread,并重写run()方法,就可以激动新线程并执行自己定义的run()方法。

2、实现Runnable接口。

步骤:(1)自定义类并实现Runnable接口。

(2)创建thread对象,用实现Runnable接口的对象作为参数实例化该thread对象。

(3)调用thread的start()方法。

总之:不管是通过继承thread类,还是通过使用Runnable接口来实现多线程的方法,最终还是通过thread的对象的API来控制线程的。

七、java对象序列化

1、Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比JVM的生命周期更长。但在现实应用中,就可能要求在JVM停止运行之后能够保存(持久化)指定的对象,并在将来重新读取被保存的对象。Java对象序列化就能够帮助我们实现该功能

2、使用Java对象序列化,在保存对象时,会把其状态保存为一组字节,在未来,再将这些字节组装成对象。必须注意地是,对象序列化保存的是对象的”状态”,即它的成员变量。由此可知,对象序列化不会关注类中的静态变量

3、在Java中,只要一个类实现了java.io.Serializable接口,那么它就可以被序列化

4、当某个字段被声明为transient后,默认序列化机制就会忽略该字段。此处将Person类中的age字段声明为transient

八、wait()和sleep()的区别?

wait()和sleep()都是使线程暂停执行一段时间的方法。

1、原理不同。sleep()方法是thread类的静态方法,它使自身暂停,把执行机会让给其他线程,等到计时时间一到就会自动苏醒。wait()方法是object类的方法。

2、对锁的处理机制不同。wait()方法进入等待状态时会释放同步锁,而sleep()方法不会释放同步锁。

3、使用区域不同。wait()必须放在同步控制方法或者同步语句块中,而sleep()方法则可以放在任何地方使用。

九、threadLocal和callable的区别?

ThreadLocal是一个关于创建线程局部变量的类

通常情况下,我们创建的变量是可以被任何一个线程访问并修改的。而使用ThreadLocal创建的变量只能被当前线程访问,其他线程则无法访问和修改

Callable: Callable位于java.util.concurrent包下,它也是一个接口,在它里面也只声明了一个方法,只不过这个方法叫做call(),可以有返回值。

十、死锁和活锁的区别?

  • 死锁:当线程A持有互斥锁lock1,线程B当前持有互斥锁lock2.接下来,当线程A仍然持有lock1时,它试图获取lock2,因为线程B正持有lock2,因此线程A会阻塞等待线程B释放。如果此时线程B在持有lock2的时候,也在试图获取lock1,因为线程A正持有lock1,因此B会阻塞等待。二者都在等待对方持有锁的释放,而二者却又都没有释放自己持有的锁。这种情形称为死锁

十一、spring和mybatis的区别?

十二、spring MVC注解问题:前端发一个请求,在后台如何实现?

在使用注解的spring MVC中,处理器Handler是基于@Controller和@RequestMapping这两个注解的,@Controller声明一个处理器类,@RequestMapping声明对应请求的映射关系。

十三、数组存的对象问题、数组排序问题。

十四、程序运行过程中报java.lang.OutOfMempryError:PermGen space是指的什么及其解决方法。

PermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen space从表面上看就是内存益出,也就是方法区,解决方法也一定是加大内存

十五、解释一下final、finally、finalize三个修饰符。

final:用于声明属性、类、方法,表示属性不可变,类不可被继承,方法不可被覆盖。

finally:作为异常处理的一部分,只能在try/catch语句中,并且附带一个语句块,表示这段语句最终一定被执行。

finalize:它是object类的一个方法,在垃圾回收器执行时会调用被回收对象的finalize()方法。

十六、对象的创建。

当虚拟机检测到new指令时,将会去检测这个指令的参数是否能在常量池定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析、和初始化。如果没有,则去进行以上三步,如果完成了,则虚拟机将为新生对象分配内存空间。

十七、如何区分新生代和老年带?

新生代分为:Eden和survivor,数据会首先分配在Eden中,如果Eden空间不足,则会出发JVM进行GC请求,如果经过一次GC后仍然保留的数据将会从Eden中转移至survivor中,并将其年龄设为1,在survivor中的数据每经历一次GC其年龄就会加1,知道达到一定的年龄就会转移到老年带中(默认的是15)。

大数据相关的问题

一、spark cache和persist的区别。

cache表示把RDD缓存到内存中,采用的级别为:MEMORY_ONLY。

persist()可以手动设置缓存级别。

二、spark缓存机制的几种方法。

1、MEMORY_ONLY:将RDD作为非序列化的Java对象存储在jvm中。如果RDD不适合存在内存中,一些分区将不会被缓存,从而在每次需要这些分区时都需重新计算它们。这是系统默认的存储级别。

2、MEMORY_AND_DISK:将RDD作为非序列化的Java对象存储在jvm中。如果RDD不适合存在内存中,将这些不适合存在内存中的分区存储在磁盘中,每次需要时读出它们。

3、MEMORY_ONLY_SER:将RDD作为序列化的Java对象存储(每个分区一个byte数组)。这种方式比非序列化方式更节省空间,特别是用到快速的序列化工具时,但是会更耗费cpu资源—密集的读操作。

4、MEMORY_AND_DISK_SER:和MEMORY_ONLY_SER类似,但不是在每次需要时重复计算这些不适合存储到内存中的分区,而是将这些分区存储到磁盘中。

5、DISK_ONLY:仅仅将RDD分区存储到磁盘中

三、数据清洗的策略及实现方式。

要考虑到一下几个方面:

1、数据的完整性

2、数据的唯一性

3、数据的权威性

4、数据的合法性

5、数据的一致性

要做到让数据更适合做数据挖掘或展示:降维(主成分分析、随机森林)、去冗余(删除字段)、减少无关信息等。

四、yarn-client 和yarn-cluster的区别?

  • yarn-cluster 和yarn-client 模式的区别就是application Master进程的区别
  • Application Master,在Yarn中,每个Application 实例都有一个Application Master进程,它是Application启动的第一个容器,它负责和ResourceManager打交道,并请求资源,获取资源后告诉NodeManager为其启动container
  • yarn-cluster模式下,driver运行在AM中,它负责向Yarn 申请资源,并监督作业的运行情况,当用户提交了作业可以关掉Client,作业会继续进行
  • yarn-client ,dirver运行在client上,此时client需要调度exector,所以不能关闭client

春招面试经验系列(三)商汤科技相关推荐

  1. 春招面试经验系列(一)菜鸟网络

    菜鸟网络 一.线程和进程的概念和区别,在Windows和linux上的区别? 概念上:(进程)具有一定独立功能的程序关于某个数据集合上的一次运行活动,是应用程序的一个实例,进程是系统进行资源分配和调度 ...

  2. 春招面试经验系列(九)蚂蚁金服

    分享一个我的公众号,最近突然想玩公众号,之前做过一段时间前端开发,考虑到现在应用程序越来越多,未来社会一定是一个充满"只有你想不到,没有你做不到"的App的世界!而微信小程序又给我 ...

  3. 2018届春招面试回顾(三)

    前言 前两篇分别介绍了网易和腾讯的面试,这两家公司作为国内游戏行业数一数二的公司,它们的面试流程相对固定,问题也比较常规,当然对面试者的要求也非常高.在2018届的春招中,除了腾讯网易外,我还参加了Y ...

  4. 2019中原银行春招面试经验帖

    因为网上关于中原银行的面试经验太少了,所以我写一写,方便后来的人参加工作.下周签三方. 首先网申,校招几乎是不刷简历的,所以都能过.之后是笔试,都是选择题,笔试是行测(40)+java(40)+数据库 ...

  5. java春招面试冲刺系列:redis基础知识详细解析

    目录 学习计划 学习笔记 百问 redis在什么情况下会变慢? 单线程的redis,如何知道要运行定时任务? 学习计划 Redis的介绍.优缺点.使用场景 Linux中的安装 常用命令 Redis各个 ...

  6. 运营商2019春招面试经验(广东移动市场岗+湖南联通技术岗)

    移动当时投了两个地方的,有的可能需要笔试. 结果:都拿到了offer 联通:是双选会现场投的.上午就是填了份资料然后问了些大概情况,下午去教室面试,问了些校园里的情况和技术的一些问题,相对比较水,基本 ...

  7. java春招面试冲刺系列:mysql基础知识超详细复习

    目录 基础 番外篇 MySQL体系结构 MySQL基准测试 数据库结构优化 MySQL的复制功能 MySQL日志 索引 表中有多个索引,优化器怎么决定使用哪个索引 SQL查询优化 数据库监控 常用命令 ...

  8. 【实习经验】从平安科技到商汤科技,谈谈我的实习经历

    点击上方,选择星标或置顶,每天给你送干货! 阅读大概需要10分钟 跟随小博主,每天进步一丢丢 转载自:九点澡堂子TM 春招蠢蠢欲动,秋招按现在疫情来看情况不容乐观,陆续有人问我相关的问题,并且从大家的 ...

  9. 商汤科技通用视觉部门招聘算法研究类岗位(校招/社招/实习生)

    点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 商汤科技通用视觉部门校招/社招/实习生算法研究类岗位招聘 1.通用视觉部门介绍 商汤通用视觉部门是商汤超大规 ...

最新文章

  1. PHP微信开发之获取access_token
  2. python中if错误-Python中常见的异常处理
  3. Strut2与Hibernate的一个web分页功能
  4. 【学习总结】数学-欧拉函数
  5. 渗透测试入门26之给你一个网站你是如何来渗透测试的?
  6. 网页数据分页显示php,PHP网页设计例子:用PHP3完成MySQL数据的分页显示
  7. 官方钦定TensorFlow2.0要改这个API,用户吐槽:全世界都是keras
  8. QT 创建鼠标右键菜单
  9. dlink虚拟服务器端口转发,D-Link路由器端口转发怎么设置【图文教程】
  10. 大数据开发笔记(四):Hive数据仓库
  11. mysql5.7手册官方下载_MySQL官方手册5.7 PDF 下载
  12. C# 使用Magick.NET进行图片格式转换
  13. 局域网查共享计算机的ip地址吗,如何查看电脑的内网IP地址?
  14. 团体程序设计天梯赛 L1-059 敲笨钟
  15. redis的安装,配置
  16. [LibreOJ 3124]【CTS2019】氪金手游【容斥原理】【概率】【树形DP】
  17. executeUpdate()和execute()的区别
  18. 恭喜 SphereEx 联合创始人潘娟成为亚马逊云科技新晋 Data Hero
  19. 大数据—Hive(一)_ 基本概念
  20. 谈谈无穷小微积分对我国微积分教学改革的影响

热门文章

  1. 人脸方向论文阅读(二)——Deep Face Representations for Differential Morphing Attack Detection
  2. MySQL万字总结!超详细!
  3. java计算机毕业设计高速公路服务区管理系统源程序+mysql+系统+lw文档+远程调试
  4. CVPR2015一些文章整理
  5. 面经(三)首次现场面试—U3D客户端开发工程师
  6. 自动化运维工具rundeck
  7. 线上RPC超时故障排查及后续GC调优思路
  8. 栗子熟了,让我们一起去黑龙潭摘板栗吧
  9. 云原生技术如何应用到智慧城市数字底座建设中?
  10. 俞敏洪 同济大学演讲