深圳民太安智能二面_秋招第一份offer

2020/9月面的.目前已经收到该公司的意向offer.  这场面试覆盖范围比较广,但偏基础,校招嘛,考察的是知识体系覆盖的怎么样.

java基础 
1 == equals区别  

== 比较基本数据类型时,比较是值.比较引用类型时,比较的是地址值

equals 情况 1:类没有覆盖 equals()方法。则通过 equals()比较该类的两个对象时,等价于通过“==”比较这两个对象。使用的默认是 Objectequals()方法。

            情况 2:类覆盖了 equals()方法。一般,我们都覆盖 equals()方法来两个对象的内容相等;若它们的内容相等,则返回 true(即,认为这两个对象相等)。


2:string能不能继承  与buffer builder的区别

string 被final修饰不能继承.   buffer是线程安全的,builder是线程不安全的但效率更高


3  hashcode与equals的区别

hashCode() 的作用是获取哈希码,也称为散列码;它实际上是返回一个 int 整数,可以重复,但是会有问题.比如set集合,存放元素的时候是根据hashcode来计算元素是否存在,如果重复就会冲突

重写 equals 时必须重写 hashCode 方法

如果两个对象相等,则 hashcode 一定也是相同的。两个对象相等,对两个对象分别调用 equals 方法都返回 true。但是,两个对象有相同的 hashcode 值,它们也不一定是相等的 。因此,equals 方法被覆盖过,则 hashCode 方法也必须被覆盖。


4  基本数据类型

byte short long double float int char boolean

5  String s=new String("w")  创建几个对象

一个或者两个对象,看常量池中是否有 "w"这个对象

 

6  collection和collections的区别

collection接口下包含list,set集合.  collections是一个工具类,给集合提供封装好的方法


7  set 和list的实现类及区别

  • HashSet(无序,唯一): 基于 HashMap 实现的,底层采用 HashMap 来保存元素
  • LinkedHashSetLinkedHashSet 是 HashSet 的子类,并且其内部是通过 LinkedHashMap 来实现的。
  • TreeSet(有序,唯一): 红黑树(自平衡的排序二叉树)
  • Arraylist: Object[]数组
  • VectorObject[]数组
  • LinkedList: 双向链表(JDK1.6 之前为循环链表,JDK1.7 取消了循环)

他们之间的区别.内容较多, 建议系统学习.本题略


8  >>  & && 这些运算符的作用

&  两位同时为“1”,结果才为“1”,否则为0

|  参加运算的两个对象只要有一个为1,其值为1。

^ 异或运算符  运算规则:0^0=0;  0^1=1;  1^0=1;   1^1=0;  相同为0 不同为1

~ 取反运算符  运算规则:~1=0;  ~0=1;    即:对一个二进制数按位取反,即将0变1,1变0。

左移运算符(<<)左移1位后a = a *2; 

右移运算符(>>)操作数每右移一位,相当于该数除以2。

右移运算符(>>>) 不带符号的右移

 

9  java中的锁


10  乐观锁和悲观锁

我写过乐观锁和悲观锁介绍的文章  https://blog.csdn.net/wang5701071/article/details/108488834


11  线程池有那几种?  

线程池我比较了解的就是ThreadPoolExecutor.其他线程池也是基于这个线程池来实现的.


12  实现线程的几种方法

继承Thread 实现runnable接口 实现callable接口


13  线程池底层用的什么数据结构

面试官应该想问的是队列的相关知识,但是当场没想明白.


14  java8的特性及具体怎么使用

lambda表达式,stream流 这些很重要

lambda函数式编程, 缩短了很多代码量,可以不写匿名内部类而直接写参数.参数的修饰符都可以省略掉.

Stream流 操作分为中间操作或者最终操作两种,最终操作返回一特定类型的计算结果,而中间操作返回Stream本身.List 或者 Set支持, Map 不支持


15  jvm的分区

程序计数器,堆区,方法区,本地方法栈,虚拟机栈


16  GC的实现方式

引用计数法,可达性算法.这两种


17  jvm的参数调优

  1. 针对JVM堆的设置,一般可以通过-Xms -Xmx限定其最小、最大值,为了防止垃圾收集器在最小、最大之间收缩堆而产生额外的时间,通常把最大、最小设置为相同的值;
  2. 年轻代和年老代将根据默认的比例(1:2)分配堆内存, 可以通过调整二者之间的比率NewRadio来调整二者之间的大小,也可以针对回收代。比如年轻代,通过 -XX:newSize -XX:MaxNewSize来设置其绝对大小。同样,为了防止年轻代的堆收缩,我们通常会把-XX:newSize -XX:MaxNewSize设置为同样大小。


18  java中的队列

Queue: 基本上,一个队列就是一个先入先出(FIFO)的数据结构

Queue接口与List、Set同一级别,都是继承了Collection接口。LinkedList实现了Deque接 口。


19  juc下都有什么

引用类型的原子类. 并发的集合 , locks , aqs. 


20  重载和重写的区别

重载发生同一类.参数列表不同,方法名相同.与返回值,访问权限无关

重写发生在父子类中.方法名,参数列表相同.访问权限大于等于父类.返回值小于父类


21  线程的几种状态,start方法运行后会怎么样.

新建,就绪,运行,阻塞.死亡


22  单例设计模式, 工厂设计模式 spring中的设计模式

spring运用到了单例模式,工厂模式.策略模式.代理模式


23  异常与error的区别

异常可以捕获后继续运行,error发生后不能继续运行


24  try返回值的时候,finaly会不会执行


25  finaly推荐不推荐写return?

不推荐.finaly是用来最终处理的一些操作


26  介绍下aqs

如果被请求的共享资源空闲,则将当前请求资源的线程设置为有效的工作线程,并且将共享资源设置为锁定状态。如果被请求的共享资源被占用,那么就需要一套线程阻塞等待以及被唤醒时锁分配的机制,这个机制 AQS 是用 CLH 队列锁实现的,即将暂时获取不到锁的线程加入到队列中。


27  Sync的原理

Monitor是线程私有的数据结构,同时还有一个全局的可用列表。每一个被锁住的对象都会和一个monitor关联,表示该锁被这个线程占用。

 


javaWEB
0  jsp的内置对象

基本上不用jsp了 略


1  过滤器怎么实现

  1.创建Filter类

    2.在web.xml文件中配置Filter


2  request的几种方法,以及他们的作用

获得客户机信息

  getRequestURL方法返回客户端发出请求时的完整URL。
  getRequestURI方法返回请求行中的资源名部分。
  getQueryString 方法返回请求行中的参数部分。
  getPathInfo方法返回请求URL中的额外路径信息。额外路径信息是请求URL中的位于Servlet的路径之后和查询参数之前的内容,它以“/”开头。
  getRemoteAddr方法返回发出请求的客户机的IP地址。
  getRemoteHost方法返回发出请求的客户机的完整主机名。
  getRemotePort方法返回客户机所使用的网络端口号。
  getLocalAddr方法返回WEB服务器的IP地址。
  getLocalName方法返回WEB服务器的主机名。

获得客户机请求头

  getHeader(string name)方法:String 
  getHeaders(String name)方法:Enumeration 
  getHeaderNames()方法

获得客户机请求参数(客户端提交的数据)

  • getParameter(String)方法(常用)
  • getParameterValues(String name)方法(常用)
  • getParameterNames()方法(不常用)
  • getParameterMap()方法(编写框架时常用)


3  登录的话 sessionid 在cookie中存放的和正常的cookie有什么区别

不知道,有知道的老哥帮忙解答下.


4  spring上下文怎么获取

通过ClassPathXmlApplicationContext类获取。使用方法如下:

ApplicationContext ap = new ClassPathXmlApplicationContext("applicationContext.xml");


5  spring中怎么实现对方法的拦截,具体步骤

使用aop


6  spring的作用域,以及单列,多列对象怎么实现

  • singleton : 唯一 bean 实例,Spring 中的 bean 默认都是单例的。
  • prototype : 每次请求都会创建一个新的 bean 实例。
  • request : 每一次HTTP请求都会产生一个新的bean,该bean仅在当前HTTP request内有效。
  • session : 每一次HTTP请求都会产生一个新的 bean,该bean仅在当前 HTTP session 内有效。
  • global-session: 全局session作用域,


7  mybatis的$ # 区别

一个预编译,一个不是预编译


8  mybatis的 resultmap 和resulttype的区别

resultType:当使用resultType做SQL语句返回结果类型处理时,对于SQL语句查询出的字段在相应的pojo中必须有和它相同的字段对应,而resultType中的内容就是pojo在本项目中的位置。

resultMap:当使用resultMap做SQL语句返回结果类型处理时,通常需要在mapper.xml中定义resultMap进行pojo和相应表字段的对应。


9  mybatis的mapper方法 如果dao层没有对应的接口会怎样

报错,mybatis是采用动态代理来实现的,找不到接口就会报错

 

数据库
1  sql关键字的执行顺序

from  where group by  select order by  limit

 


2  求平均数的函数,以及求全班平均数的sql

group by+avg


3  like关键字,怎么保证索引被使用  

模糊匹配放到最后

 

以下是个人发挥题略

编程题
递归输出文件的路径
二分法查找

你对公司的期望是什么;
你自身的发展规划是什么
你有什么问我的吗? 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值