前后端⾯试题(1)
前后端⾯试题
讲⼀下java中int数据占⼏个字节
electronic的词性转换Int占 4个字节,32位
⾯向对象的特征有哪些⽅⾯
抽象:将不同类对象的共同特征总结出来构造类的过程,分为属性抽象和⾏为抽象,抽象只关注对象的哪些属性和⾏为,并不关注⾏为的细节是什么
封装:封装是指将抽象性函式接⼝的实现细节部分包装,隐藏起来的⽅法,为了防⽌该类的代码被其他类的代码随即访问
继承:继承⽗类的特征和⾏为,⼦类就有了⽗类的⽅法;继承⽗类的⽅法,⼦类就有了⽗类的特征,它可以使⽤现有类的所有功能,并在⽆需重新编写原来的类的情况下对这些功能进⾏扩展。
多态:同⼀个类实例的相同⽅法,在不同情形有不同的表达形式,同⼀个接⼝,使⽤不同的实例执⾏不同的操作
有了基本数据类型,为什么还需要包装类型?
java是⼀门⾯向编程语⾔,为了让基本数据类型具有对象的特性,出现了包装类型,他相当于将基本类型包装起来,使其具有了对象的特性,并且为其添加了属性和⽅法,丰富了基本类型的操作
在往集合⾥⾯存储数据是,int,double这些类型是存不进去的,因为只能存储obj类型,所有这时候就需要⽤到包装类型了
说⼀下"=="和equals⽅法究竟有什么区别?
==如果两边是基本数据类型,就会判断值是否相等,如果是对象,判断对象的地址是否相等
eques⽅法⽤于判断对象的内容是否相等,不能⽤于基本数据类型
讲⼀下java中的集合?
Java存储集合分为两种
Value的Set,Key:Value的List
List:有序,可以重复
Set:⽆序,不能重复
实现⼀个拷贝⽂件的⼯具类使⽤字节流还是字符流?
使⽤字节流,因为在不清楚是使⽤字节流还是字符流的情况,使⽤字节流通⽤
讲⼀下线程的⼏种实现⽅式?启动⽅式?区分⽅式?
继承Thread类
实现Runnable接⼝
启动⽅式
先实例化
Thread thread = new Thread()
thread.setName()
thread.start()
mysql面试题汇总
thread.run()
给线程起名字来区分,起名字是必不可少的⼀过程
线程池的作⽤?
降低资源消耗:通过重复利⽤现有的线程来执⾏任务,避免多次创建和销毁线程。
提⾼响应速度:因为省去了创建线程这个步骤,所以在拿到任务时,可以⽴刻开始执⾏。
提供附加功能:线程池的可拓展性使得我们可以⾃⼰加⼊新的功能,⽐如说定时、延时来执⾏某些线程。
讲⼀下什么是设计模式?常⽤的设计模式有哪些?
设计模式是解决软件开发某些特定问题⽽提出的⼀些解决⽅案也可以理解成解决问题的⼀些思路。通过设计模式可以帮助我们增强代码的可重⽤性、可扩充性、 可维护性、灵活性。我们使⽤设计模式最终的⽬的是实现代码的 ⾼内聚 和 低耦合。
单例模式、简单⼯⼚模式、代理模式
讲⼀下HashMap和HashTable的区别?HashTable和ConcurrentHashMap的区别?
HashMap:线程不安全,允许null值,是新版JDK提供的接⼝
HashTable:线程安全,不允许null值,是早期提供的接⼝
hashtable每次同步执⾏的时候都要锁住整个结构,ConcurrentHashMap锁的⽅式是锁住当前的桶
相同点: 实现原理相同,功能相同,底层都是哈希表结构,查询速度快,在很多情况下可以互⽤
简单介绍⼀下数据库的三范式?
列不可分割
⾮主属性依赖于主键
属性不依赖于其他⾮主属性
事务四个基本特征或 ACID 特性。
事务是并发控制的基本单位,是⽤户定义的⼀个操作序列。这些操作要不都执⾏,要不都不执⾏,是⼀个不可分割的⼯作单位。
原⼦性:表⽰事务内操作不可分割。要么都成功、要么都是失败.
⼀致性:要么都成功、要么都是失败,后⾯的失败了要对前⾯的操作进⾏回滚。
隔离性:⼀个事务开始后,不能后其他事务⼲扰。
持久性:表⽰事务开始了,就不能终⽌。
Struts2中的,你都⽤它⼲什么?
struts2中的的功能(参数处理、⽂件上传、字符编码等)都是通过系统实现的。
如果业务需要,当然我们也可以⾃定义,进⾏可插拔配置,在执⾏Action的⽅法前后、加⼊相关逻辑完成业务。
使⽤场景:
⽤户登录判断、⽤户权限判断
简单讲⼀下数据库的触发器的使⽤场景?
触发器,需要有触发条件,当条件满⾜以后做什么操作。
例如删除订单时要删除订单明细。
简单介绍下Ajax及原理?
Ajax是异步的javascript和xml。作⽤是通过AJAX与服务器进⾏数据交换,AJAX可以使⽹页实现局部更新。
实现⽅式是通过Ajax XmlHttpRequest对象,使⽤这个对象可以异步向服务器发送请求,获取响应,完成局部更新。
简单讲⼀下SpringMVC的执⾏流程?
核⼼控制器捕获请求、查Handler、执⾏Handler、选择ViewResolver,通过ViewResolver渲染视图并返回
Spring事务的隔离级别
Iso lation default default
ISOLATION_DEFAULT default:使⽤数据库本⾝使⽤的隔离级别
颜大全圆表ISOLATION_DEFAULT read_uncommitted:读未提交(脏读)最低的隔离级别,可能导致脏读、不可重复读、幻读。
ISOLATION_DEFAULT read_committed:读已提交,ORACLE默认隔离级别,可能导致不可重复读、幻读
ISOLATION_DEFAULT repeatable_read:可重复读,解决不可重复读的隔离级别,可能导致幻读。
ISOLATION_DEFAULT serializable:串⾏化,最⾼的事务隔离级别,不管多少事务,挨个运⾏完⼀个事务的所有⼦事务之后才可以执⾏另外⼀个事务⾥⾯的所有⼦事务,这样就解决了脏读、不可重复读和幻读的问题了
Redis对象保存?Redis的使⽤场景
json字符串 或者 字节
计数器、缓存队列等
public、private、protected修饰符的权限和使⽤场景的要求是什么?
public:任意包任意类可以访问
可以任意访问属性和⽅法的使⽤
private:只有当前类可以访问
常⽤于封装保护数据,不能被继承
protected:同⼀包内可以访问和继承
在同⼀包内访问继承,受保护,在其他包内⽆法访问
优化数据库
使⽤事务、使⽤索引、优化SQL语句、使⽤外键、锁定表
怎么把和业务平台绑定?
⽤户注册实体中包含⼀个号的字段,当进⾏绑定时就是修改⽤户的号字段。
1、⽤户同意授权,获取code
2、通过code换取⽹页授权,openid,access_token
3、刷新access_token
4、拉取⽤户信息
5、检验授权凭证是否有效
内置数据类型有哪⼋种?
byte、char、int、short、long、boolean、char、float
讲⼀下http get和post请求的区别?
GET在浏览器回退时是⽆害的,⽽POST会再次提交请求。
GET请求会被浏览器主动缓存,⽽POST不会,除⾮⼿动设置。
GET请求只能进⾏url编码,⽽POST⽀持多种编码⽅式。
GET请求参数会被完整保留在浏览器历史记录⾥,⽽POST中的参数不会被保留。
GET请求在URL中传送的参数是有长度限制的,⽽POST么有。
对参数的数据类型,GET只接受ASCII字符,⽽POST没有限制。
GET⽐POST更不安全,因为参数直接暴露在URL上,所以不能⽤来传递敏感信息。
GET参数通过URL传递,POST放在Request body中。
GET产⽣⼀个TCP数据包;POST产⽣两个TCP数据包。
简单说⼀下servlet的⽣命周期?
加载servlet的类——》实例化servlet的类——》调⽤servlet的init() ⽅法初始化servlet class——》调⽤service() ⽅法执⾏doget或dopost() ⽅法来响应请求——》调⽤destroy的⽅法结束servlet
⽤jdbc怎么调⽤存储过程?
加载数据库驱动类
获取数据库连接对象
创建CallableStatement对象
设置输⼊参数
注册输出参数
执⾏调⽤存储过程
关闭数据库操作对象
什么是ORM?
对象关系映射(Object Relational Mapping,简称ORM)模式是⼀种为了解决⾯向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使⽤描述对象和数据库之间映射的元数据,将程序中的对象⾃动持久化到关系数据库中。实现⽅式是通过ORM中间件在任何⼀个应⽤的业务逻辑层和数据库层之间充当桥梁
iBatis(mybatis)与Hibernate有什么不同?
⼆者都是ORM框架,不同点在于
1、hibernate要⽐ibatis功能强⼤很多。因为hibernate⾃动⽣成sql语句,ibatis需要在xml配置⽂件中写sql语句
2、ibatis可以出来复杂语句,⽽hibernate不能。
h5个人网站设计
3、ibatis要⽐hibernate简单的多。ibatis是⾯向sql的,不⽤考虑对象间⼀些复杂的映射关系。
说⼀下你对servlet的理解?或者servlet是什么?
全称Java Servlet,是⽤Java编写的服务器端程序。⽽这些Servlet都要实现Servlet这个接⼝。其主要功能在于交互式的浏览和修改数据,⽣成动态Web内容。Servlet运⾏于⽀持Java的应⽤服务器中。Servlet是⼀个运⾏了 ⾯向请求/ 响应 服务器中的⽹络模块。
Servlet API中forward() 与redirect()的区别?
forward是服务器端的转向⽽redirect是客户端的跳转。
Forward是⼀次请求中完成。⽽redirect是重新发起请求。
Forward是在服务器端完成,⽽不⽤客户端重新发起请求,效率较⾼。
使⽤forward浏览器的地址不会发⽣改变。⽽redirect会发⽣改变。
JSP和Servlet有哪些相同点和不同点?
相同点:它们本质上都是java类
不同点:
JSP经编译后变成Servlet
jsp更擅长表现于页⾯显⽰,Servlet更擅长于逻辑控制
Servlet的应⽤逻辑是在java⽂件中,并且完全从表现层中的HTML⾥分离开来。⽽JSP是Java和HTML可以组合成⼀个扩展名为.jsp的⽂件。
说⼀下session和cookie的区别?你在项⽬中都有哪些地⽅使⽤了?
cookie数据存放在客户的浏览器上,session数据放在服务器上。
cookie不是很安全,别⼈可以分析存放在本地的COOKIE并进⾏COOKIE欺骗,如果主要考虑到安全应当使⽤session。
session会在⼀定时间内保存在服务器上。当访问增多,会⽐较占⽤服务器的性能,考虑到减轻服务器性能⽅⾯,应当使⽤COOKIE。
单个cookie保存的数据不能超过4K,很多浏览器都限制⼀个站点最多保存20个cookie。
使⽤场景:将登陆信息等重要信息存放为SESSION,其他信息如果需要保留,可以放在COOKIE中,⽐如购物车
说⼀下msyql的分页?Oracle的分页?
Mysql是使⽤关键字limit来进⾏分页的 limit offset,size 表⽰从多少索引开始取多少位
Oracle的分页使⽤三层嵌套查询。
字符ascii属于什么简单讲⼀下数据库的存储过程的使⽤场景?
通常,复杂的业务逻辑需要多条 SQL 语句。这些语句要分别地从客户机发送到服务器,当客户机和服务器之间的操作很多时,将产⽣⼤量的⽹络传输。如果将这些操作放在⼀个存储过程中,那么客户机和服务器之间的⽹络传输就会⼤⼤减少,降低了⽹络负载
简单说⼀下你对jdbc的理解?
它就是Java与数据库连接的桥梁或者插件,⽤Java代码就能操作数据库的增删改查、存储过程、事务等。
jQuery的常⽤选择器?
ID选择器、Class选择器、标签选择器、通⽤选择器、层次选择器、属性选择器
JDBC中的PreparedStatement相⽐Statement的好处?
⼤多数我们都使⽤PreparedStatement代替Statement
PreparedStatement是预编译的,⽐Statement速度快 效率⾼
代码的可读性和可维护性⾼
python中get函数用法
PreparedStatement可以防⽌SQL注⼊攻击,⽽Statement却不能。
讲⼀下Spring的事务传播特性?
多个事务存在是怎么处理的策略
propagation_required
例如:PROPAGATION_REQUIRED
Required ⽀持当前事务。如果当前没有事务,则开启新的事务
Supports ⽀持当前事务。如果当前没有事务,则以⾮事务的⽅式执⾏
Mandatory ⽀持当前事务,如果当前没有事务,就抛出异常。
requires_new 新建事务,如果当前存在事务,把当前事务挂起。
Not_support 以⾮事务⽅式执⾏操作,如果当前存在事务,就把当前事务挂起。
Never 以⾮事务⽅式执⾏,如果当前存在事务,则抛出异常。
Nested ⽀持当前事务,新增Savepoint点,与当前事务同步提交或回滚。
Hibernate映射对象的状态?
临时状态:刚刚⽤new语句创建,没有被持久化。
持久化状态:已经被持久化,加⼊到session的缓存中。
游离状态:已经被持久化,但不处于session中。
删除状态:对象有关联的ID,并且在Session管理下,但是已经被计划(事务提交的时候,commit())删除。
介绍⼀下Hibernate的缓存?
Hibernate中的缓存分⼀级缓存和⼆级缓存。
⼀级缓存就是Session级别的缓存,在事务范围内有效,是内置的不能被卸载。
⼆级缓存是SessionFactory级别的缓存,从应⽤启动到应⽤结束有效。是可选的,默认没有⼆级缓存,需要⼿动开启。
项⽬开发流程?
需求定义、需求设计、需求开发、产品提测、产品上线
bootstarp是什么
BootStrap是⼀个移动设备优先的UI框架。我们可以不⽤谢任何css,js代码就能实现⽐较漂亮的有交互性的页⾯。我们程序员对页⾯的编写是有硬伤的,所有要⾃⼰写页⾯的话就要使⽤类似于bootstrap这样的UI框架。
平时⽤得很多的:
模态框
表单,表单项
布局
删格系统

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。