海康威视实习生面试总结

今天上午进行了海康威视面试,虽然没过,但还是总结一下:

自我介绍

数据库第三范式,左外连接,右外连接,子查询

第一范式( 1NF): 字段具有原子性,不可再分。 所有关系型数据库系统都满足第一范式)
数据库表中的字段都是单一属性的, 不可再分。 

第二范式( 2NF) 是在第一范式( 1NF) 的基础上建立起来的, 即满足第二范式( 2NF) 必
须先满足第一范式( 1NF)。要求数据库表中的每个实例或行必须可以被惟一地区分。 通常需要为表加上一个列, 以存储
各个实例的惟一标识。 这个惟一属性列被称为主关键字或主键。第二范式( 2NF) 要求实体的属性完全依赖于主关键字。 

第三范式( 3NF) 必须先满足第二范式( 2NF)。 简而言之, 第三范式( 3NF) 要求一个
数据库表中不包含已在其它表中已包含的非主关键字信息。1, 每一列只有一个值2, 每一行都能区分。3, 每一个表都不包含其他表已经包含的非主关键字信息。

内连接:查询出A表和B表能够完全匹配的记录

外连接:查询出A表和B表能够完全匹配的记录之外, 将其中一张表的记录无条件的完全查询出来,对方表没有匹配的记录, 会自动模拟出null与之匹配。

左外:把join关键字左边的表数据全部显示

右外:把join关键字右边的表数据全部显示

数据库关系通过怎么维护的

扫描二维码关注公众号,回复: 2477806 查看本文章

外键

mybatis原理,和hibernate区别

Mybatis和hibernate区别,它不完全是一个ORM框架,因为MyBatis需要程序员自己编写Sql语句。

mybatis可以通过XML或注解方式灵活配置要运行的sql语句,并将java对象和sql语句映射生成最终执行的sql,最后将sql执行的结果再映射生成java对象。

Mybatis学习门槛低,简单易学,程序员直接编写原生态sql,可严格控制sql执行性能,灵活度高,非常适合对关系数据模型要求不高的软件开发。但是灵活的前提是mybatis无法做到数据库无关性,如果需要实现支持多种数据库的软件(Oracle,mysql)则需要自定义多套sql映射文件,工作量大。Hibernate对象/关系映射能力强,数据库无关性好,对于关系模型要求高的软件(例如需求固定的定制化软件)如果用hibernate开发可以节省很多代码,提高效率。但是Hibernate的学习门槛高,要精通门槛更高,而且怎么设计O/R映射,在性能和对象模型之间如何权衡,以及怎样用好Hibernate需要具有很强的经验和能力才行。

spring是什么

Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架。不仅不排斥其他框架,还能帮其他框架管理对象.aop支持,ioc思想,spring jdbc,aop 事务,junit 测试支持,spring负责管理项目中所有对象

springboot

Spring Boot框架的核心就是自动配置,只要存在相应的jar包,Spring就帮我们自动配置。如果默认配置不能满足需求,我们还可以替换掉自动配置类,使用我们自己的配置。另外,Spring Boot还集成了嵌入式的Web服务器,系统监控等很多有用的功,让我们快速构建企业及应用程序。

Tomcat是内置的还是外置的

DOS命令执行web程序,日志信息之后就会显示程序的运行结果了。默认情况下会使用内嵌的Tomcat来运行。我们使用localhost:8080来访问。

使用maven项目部署命令

mvn spring-boot:run

servlet是什么,生命周期三个方法

Servlet(Server Applet)是Java Servlet的简称,是为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容。

init方法:只会被初始化一次,由容器初始化,初始化成功后将缓存与容器中。 它的初始时间分为两种: 用户第一次访问时。 服务器启动时,需要配置。

(2)service方法:每次请求都会访问此方法。 每次请求都会创建新的Request和Response对像。

(3)destory方法:当服务器关闭时由容器调用并销毁。

多态

多态: 允许不同类的对象对同一消息做出响应,同一消息可以根据发送对象的不同而采用多种不同的行为方式。

实现多态的必要条件:继承、重写、向上转型。(向上转型:在多态中需要将子类的引用赋给父类对象,只有这样该引用才能够具备技能调用父类的方法 和子类的方法)。

多线程怎么实现的,区别

Java多线程实现方式主要有四种:继承Thread类、实现Runnable接口、实现Callable接口通过FutureTask包装器来创建Thread线程、使用ExecutorService、Callable、Future实现有返回结果的多线程

1、继承Thread类创建线程
Thread类本质上是实现了Runnable接口的一个实例,代表一个线程的实例。启动线程的唯一方法就是通过Thread类的start()实例方法。start()方法是一个native方法,它将启动一个新线程,并执行run()方法。这种方式实现多线程很简单,通过自己的类直接extend Thread,并复写run()方法,就可以启动新线程并执行自己定义的run()方法

2.实现Runnable接口

如果自己的类已经extends另一个类,就无法直接extends Thread,此时,必须实现一个Runnable接口,为了启动MyThread,需要首先实例化一个Thread,并传入自己的MyThread实例

区别:java只能单继承,因此如果是采用继承Thread的方法,那么在以后进行代码重构的时候可能会遇到问题,因为你无法继承别的类了。

  其次,如果一个类继承Thread,则不适合资源共享。但是如果实现了Runable接口的话,则很容易的实现资源共享。

集合

 Collection是顶层接口,有两个子接口List和Set.

                List:ArrayList,LinkedList,Vector;
                Set:HashSet,TreeSet;

   List:元素是有序可以重复的;因为该集合体系有索引;
                 ----ArrayList:底层的数据结构使用的是数组结构;特点是查询速度很快,但是增删稍慢。线程不同步,效率高。(了解)
                 ----LinkList:底层使用的是链表数据结构;特点是查询速度比较慢,但是增删速度很快;(在使用的时候要选择合适的容器。)
                 ----Vector:底层是数组数据结构,(和ArrayLiat功能一致。)Vector出现的时候集合框架还没出现呢,Vector是1.0版本出现的,Collection是1.2版本才出现的。Vector是同步的。
         
                 ArrayList和Vector的区别:
                 ArrayList是线程不同步的,但是Java提供了专门的加锁方式;Vector是线程同步的,但是效率比较低;
                 ArrayList默认长度是10,当超过10时,就会new一个新的长度为50%延长的数组。把原来数组中的元素copy到新的数组中来,再把新的元素添加进去。
                 Vector的默认长度也是10,当超过10时,是100%延长new一个新数组

Set:元素是无序的,存入和取出的顺序不一定一致,元素不可以重复。
        --HashSet:数据结构是哈希表,线程是非同步的,保证元素的唯一性原理:判断元素的HashCode值是否相同,如果相同,还会继续判断元素的equals方法是否为true。
        --TreeSet:可以对Set集合中的元素进行排序。字母是按照ASCII码表的自然顺序排序。底层数据结构是二叉树,保证元素唯一性的依据是compareTo方法return 0

Map集合:和Collection一样,都是集合框架中的顶层接口,但是和Collection之间没有外观必然的联系(内部有联系)。
Collection是单列集合,Map是双列集合。
Map集合的基本特点:
        1.该集合存储键值对,一对一对往里存,而且要保证键的唯一性。
        2.ArrayList可以给元素加索引,但是Map不光可以加索引,给元素起名字都可以。

Map的三个子类对象:
1.Hashtable:
        底层是哈希表数据结构,任何非null对象都可以作为键和值,用作键的对象必须实现hashCode方法和equals方法。
        该集合是线程同步的。其他大致和Hashtable相同。
        jdk1.0,效率低。
2.HashMap:
        底层是哈希表数据结构,允许使用null键和null值。
        该集合时候线程非同步的。 
        jdk1.2,效率高。
3.TreeMap:    
        底层数据结构是二叉树,可以用于对Map中的键进行排序,和Set很像。其实Set集合底层就是使用了Map集合。
        线程不同步。

讲讲比较熟的项目,项目遇到的问题,学习遇到的问题,具体什么问题

小组项目怎么分配任务的

登录注册怎么实现的,第二次登录,怎么实现的

课余时间怎么安排学习的

在班里的水平

简历项目不在多,多是问比较熟悉的项目,还是要把基础,框架的原理弄懂

猜你喜欢

转载自blog.csdn.net/weixin_42236797/article/details/81069203
今日推荐