--------------------------------------------------上海软中信息面试:
map 元素不重复底层原理:
https://www.cnblogs.com/dolphin0520/p/3681042.html
https://www.imooc.com/article/27967
https://blog.csdn.net/yxm234786/article/details/8255609
arraylist 线程不安全
list和set:
Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。Collection接口又有 3 种子类型,List、Set 和 Queue
Set 不保存重复的元素。是无序的(这是一个误区,这里所说的顺序有两个概念,一是按照添加的顺序排列,二是按照自然顺序a-z排列。Set并不是无序的传统所说的Set无序指的是HashSet,它不能保证元素的添加顺序,更不能保证自然顺序,而Set的其他实现类是可以实现这两种顺序的。1,LinkedHashset : 保证元素添加的自然顺序2,TreeSet : 保证元素的自然顺序)
https://www.runoob.com/java/java-collections.html
ssm#和$:$,mybatis不会修改或转义字符串,可能导致sql注入
mysql分页 limit
limit第一个参数包括吗 包括 limit 0,10 取出0-9,是第一到第10条
--再整理语言:
springmvc流程,左右连接
ssm和ssh的区别
还有问:
servlet过程
servlet什么时候销毁
线程状态
--------------------------------------------------上海南洋万邦面试:
int(5) 几个字节 :
int(M)只是数据显示的长度,不影响存储,都是固定的4字节
varchar(M)是M个字符
char和varchar的区别:
Mysql 5.0后,英文字符固定都是一个字节,汉字字符根据编码方式占不同字节,Utf-8占3个字节,gbk占了2个字节。
varchar(M)表示最大M个字符
char(M): M最大255(即最大255个字符);定长(定义 char(10),那么不论你存储的数据是否达到了10个字符,都要占掉10个字符);效率高;
varchar(M):字段最大65535字节(也是mysql每行最大字节数),M最大要具体算的;变长;效率比char低;
char(5)放了两个字符,结果是几个字节
因为是定长,所以一定是5个字符,但要看是什么字符来算字节
delete drop truncate区别:truncate删除所有记录后自增归零 truncate table 表名
string连接两个字符串:+ 、string的concat()区别:
都是生成新字符串(string.concat()生成新字符串,不影响原来的字符串),但是+可以是字符串或者数字及其他基本类型数据,而concat只能接收字符串;+左右可以为null,concat为会空指针;
还有stringbuilder和stringbuffer的append()
https://blog.csdn.net/youanyyou/article/details/78992978
知道哪些设计模式(观察者模式可以处理附加的业务不影响其他业务)
Spring事务:b()里a()添加了事务,异常会回滚吗
事务传播行为用来描述由某一个事务传播行为修饰的方法被嵌套进另一个方法的时事务如何传播
七种传播事务类型,主要是:
PROPAGATION_REQUIRED(如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这是最常见的选择。)、
PROPAGATION_REQUIRES_NEW(新建事务,如果当前存在事务,把当前事务挂起。)、
PROPAGATION_NESTED(如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与PROPAGATION_REQUIRED类似的操作。在外围方法未开启事务的情况下Propagation.NESTED和Propagation.REQUIRED作用相同,修饰的内部方法都会新开启自己的事务;外围方法开启事务,内部事务为外围事务的子事务,外围方法回滚,内部方法也要回滚。)
Spring默认取决于是否抛出runtime异常). 如果抛出runtime exception 并在你的业务方法中没有catch到的话,事务会回滚。
一般不需要在业务方法中catch异常,如果非要catch,在做完你想做的工作后(比如关闭文件等)一定要抛出runtime exception,否则spring会将你的操作commit。
如果是PROPAGATION_REQUIRED,内外是同一事务,即使外部方法有trycatch捕获了内部异常不被外部方法感知,因为是同一事务,有一个方法抛异常,
事务都会回滚,所以内部方法抛出异常回滚,这整个事务就会回滚
PROPAGATION_REQUIRES_NEW,内外是不同事务,如果外部方法用trycatch捕获了内部方法的异常不被外部方法感知,那么只有内部回滚,外部不回滚
PROPAGATION_NESTED 外部有事务时,如果外部事物用trycatch捕获了内部方法的异常不被外部方法感知,那么只回滚内部事务,外部不回滚;如果没用trycatch捕获内部异常,那么外部感知到异常也回滚;如果外部抛异常,那么子事务也要回滚。即内部回滚时,看外部有没有感知到异常;外部抛异常回滚时内部一定回滚。
https://a-bin.iteye.com/blog/1056839
https://blog.csdn.net/qq_21870555/article/details/80923389
https://segmentfault.com/a/1190000013341344#articleHeader10
在Java中内部类主要分为成员内部类、静态内部类、局部内部类(有这样一种内部类,它是嵌套在方法和作用域内的)、匿名内部类。
局部内部类想访问局部变量必须用final修饰那个局部变量:
java的做法是把局部变量拷贝到内部类中,来解决局部变量比内部类对象先死的问题;但这样又迎来了一个问题,内部类对象控制的只是自己的拷贝,没有影响到局部变量,final就解决了这个问题。
https://www.cnblogs.com/chenssy/p/3388487.html
https://segmentfault.com/a/1190000002735907
https://www.cnblogs.com/ai20110304/p/4793713.html
https://www.zhihu.com/question/21395848
还问了:
linkedlist和arraylist区别
索引,左外连接
final
--前端:
块级元素和行级元素
Js循环方法
jquery添加css
Ajax请求类型
http post,get传送数据范围区别,不是浏览器下区别:https://blog.csdn.net/android_zhengyongbo/article/details/75452305
-----------------------------------------------------------上海金蝶:
笔试:
数组创建直接初始化
java语法规定的,给数组赋值有以下方式
(1)int [] a = {1,3};
(2)int[] a = new int[]{1,3};
(3)int[] a = new int[2];
a[0] = 1;
a[1] = 3;
不可以int [] a = new int[2]{1,3};
https://zhidao.baidu.com/question/327635603880044485.html和https://bbs.csdn.net/wap/topics/390125558
二维数组初始化不可以没有外围括号
重写 返回类型的要求 有要求的
string.concat影响原来的字符串吗 不影响
面试:
哪些字段添加索引:(哪些情况不创建索引)
https://baike.baidu.com/item/%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B4%A2%E5%BC%95/8751686?fr=aladdin
还有问:
list和set的区别
---------------------上海有孚网络:
谁把servlet实例放进tomcst,什么时候销毁,单实例还是多实例没答出来,支持多线程吗
容器将加载Servlet类并将其放入到Servlet类实例池
在web容器关闭时,容器调用Servlet类的destroy()对资源进行释放
单实例,支持多线程
jsp编译成servlet?
jsp是Servlet的扩展,(在jsp文件被第一次请求时会被编译成Servlet);Servlet是jsp的底层
区别:jsp比Servlet更具有显示层的含义;
Servlet需要一定的配置,jsp则是容器会自动识别并将他编译成servlet
springmvc的注解有哪些?
@Controller
@RequestMapping @PathVariable(用于将请求URL中的模板变量映射到功能处理方法的参数上,即取出uri模板中的变量作为参数)
@ResponseBody
@responsebody返回的一定是json数据吗
通常用来返回JSON数据或者是XML
@Controller和@RestController的区别
@RestController注解相当于@ResponseBody + @Controller合在一起的作用。即返回媒体内容
而@Controller是返回视图
多线程什么包:
java.lang.Thread java.util.concurrent包
什么时候为什么用多线程
https://www.cnblogs.com/liuyangofficial/p/7072595.html
jdbc是什么
(Java Database Connectivity). 为了使Java编写的程序不依赖于具体的数据库,Java提供了专门用于操作数据库的API,即JDBC。
----------------------------------------------------上海辰华
System.out.printf(“%m.nf",a)
jsp String转Date用哪个类
DateForamt是一个抽象类,所以平时使用的是它的子类SimpleDateFormat
http://www.cnblogs.com/huangminwen/p/5994846.html
1.日期转字符串(格式化)
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf.format(date)); //2016-10-24 21:59:06
2.字符串转日期(解析)
String string = "2016-10-24 21:59:06";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf.parse(string)); //Mon Oct 24 21:59:06 CST 2016
增强for循环 map.remove(key) : 不可以修改,会报异常java.util.ConcurrentModificationException。增强for循环也是用的iterator
jdbc事务: 1.用con.setAutoCommit(false)关闭自动提交模式 2.用con.commit()提交事务 用rollback()处理事务失败
sql 重复name记录和数量
select *
from tb t
group by name
having count(name)>1
删除name重复的记录,只保留其中rowid最小的记录:
https://blog.csdn.net/cmzhuang/article/details/82805411
我的:
select t1.rowid //这里的rowid不符合规则,不是分组字段也不在聚合函数中,其他的数据库会报错,mysql只显示第一条记录
from tb t1
where t1.name in (
select t2.name
from tb t2
group by t2.name
having count(t2.name)>1
)
group by t1.name
having t1.rowid<=all(
select t3.rowid
from tb t3
where t3.name=t1.name
)
再delete
正确:
delete
from tb t1
where t1.name in (
select t2.name
from tb t2
group by t2.name
having count(t2.name)>1
)
and t1.rowid not in (
select min(t3.rowid)
from tb t3
group by t3.name
having count(t3.name)>1
)
js a页面跳b页面 获取date的月份
window.location.href="b.html";
new Date().getMonth()和java差不多
jsp获取绝对路径
${pageContext.request.contextPath}
<%=request.getContextPath()%>
https://www.cnblogs.com/xdp-gacl/p/3707243.html
sping事务传播
平衡二叉树:左右子树的高度差不超过1,且左右子树也是平衡二叉树
oracle char varchar varchar2
括号后的数字含义和mysql不同
https://www.cnblogs.com/kakaisgood/p/8027478.html
VARCHAR2把空串等同于null处理,而varchar仍按照空串处理
oracle null 显示0
NVL(Expr1,Expr2)如果Expr1为NULL,返回Expr2的值,否则返回Expr1的值
例如:select NVL(SUM(MONEY) ,0) from tb全都在NVL这儿起作用
mysql null转0:
select ifnull(colname,0) from tablename;
还可以用case when解决:
select case when 字段 is null then 0 else 字段 end from 表名
https://blog.csdn.net/weixin_42056745/article/details/82977739
null和非null求和求平均
https://blog.csdn.net/whaxrl/article/details/51195241
sql 每月注册人数
使用group by date_format()
https://www.cnblogs.com/wihainan/p/6187653.html
https://my.oschina.net/huluobotx/blog/510624
https://blog.csdn.net/suyujiezhang/article/details/80923708 https://blog.51cto.com/linkyou/751980
SELECT DATE_FORMAT( deteline, "%Y-%m-%d %H" ) , COUNT( * )
FROM test
GROUP BY DATE_FORMAT( deteline, "%Y-%m-%d %H" )
--hql
hibernate事务:
Hibernate对JDBC进行了轻量级的封装,它本身在设计时并不具备事务处理功能。Hibernate将底层的JDBCTransaction或JTATransaction进行了封装,再在外面套上Transaction和Session的外壳,其实是通过委托底层的JDBC或JTA来实现事务的处理功能的。
如果hebinate使用jdbc事务,Hibernate在Session控制下,在取得数据库连接后,就立刻取消自动提交模式,即Hibernate在一个执行Session的beginTransaction()方法后,就自动调用JDBC层的setAutoCommit(false)。
https://www.cnblogs.com/HEWU10/p/4722138.html
mybatis事务:
MyBatis的事务管理分为两种形式:
使用JDBC的事务管理机制:即利用java.sql.Connection对象完成对事务的提交(commit())、回滚(rollback())、关闭(close())等。
使用MANAGED的事务管理机制:这种机制MyBatis自身不会去实现事务管理,而是让程序的容器如(JBOSS,Weblogic)来实现对事务的管理。
--可以insert接select吗
sql if:
SELECT IF(sva=1,"男","女") AS s FROM table_name
作为表达式的if也可以用CASE WHEN来实现:
SELECT CASE sva
WHEN 1 THEN '男'
ELSE '女'
END AS s
FROM table_name
WHERE sva != '';
https://www.cnblogs.com/xuhaojun/p/9141396.html
---------------------------------------------------------------------上海谐桐(梦鱼) 19.4.8
page在哪和实际范性结合的,具体怎么查的
Page<E> 设置list和totalcount为相应的sql返回结果,将该泛型page返回
-- gc
说说同步异步 :
同步 发送请求需要等待,结束后才能继续操作;异步不需要等待;
https://zhidao.baidu.com/question/505435343.html?word=%E5%90%8C%E6%AD%A5%E5%BC%82%E6%AD%A5&ms=1&rid=11096525490884096247
线程同步异步:一样的吧
目前涉及同步异步的:
ajax异步调用、线程同步异步、数据库加锁来同步数据
ajax:
无需重新加载整个网页的情况下,能够更新部分网页的技术。传统的网页(不使用 Ajax)如果需要更新内容,必须重载整个网页页面。
--排序及其时间复杂度
---------------------------------------------------------------------安硕 4.10
人才 岗位和部门的关系映射
看一个表一行能否和另一表多行对应,以及另一表一行能否与这表多行对应
https://m.baidu.com/sf_zd/question/24321980.html?word=%E4%B8%80%E5%AF%B9%E5%A4%9A%E5%85%B3%E7%B3%BB&ms=1&rid=8047333618678069144
session和cookie实现登录信息
session会在第一次登陆时保存信息,之后拦截时只需检测有没有session即可,有的话就可页面标识
session在服务器端, 提供的方法使用比较方便. session机制决定每个用户只会获取到自己的session。根据得到session和session是否有某个网站设置的属性来跟踪会话,和登录拦截,也可以用来在页面显示用户信息。
cookie在客户端. cookie不可跨域名
根据cookie不为空并且有网站设置的属性来跟踪回话,和登录拦截,也可以用来在页面显示用户信息。
https://www.cnblogs.com/linguoguo/p/5106618.html
cookie不可跨域名,所以得到的是本网站的cookie
区别:https://m.baidu.com/sf_zd/question/276483460.html?word=request.getsession是所有用户的吗&ms=1&rid=8096882732545346705
------------------------------------------------------------------外高桥网络
jdbc 回滚 是哪个对象做的
Connection
触发器什么时候用
ajax 异步同步区别:
异步方式,$.ajax执行后,会继续执行ajax后面的脚本,直到服务器端返回数据后,触发$.ajax里的success方法
若要将其设置为false,则所有的请求均为同步请求,在没有返回值之前,同步请求将锁住浏览器,用户其它操作(js里的)必须等待请求完成才可以
https://www.cnblogs.com/sdya/p/4624578.html
----------------------软中二面
什么时候用触发器
springmvc和struts2的区别
----------------------中科云谷 4.9
笔试:
string s=“Hello”+9+1; 输出s是?
Hello91
"Hello"+(9+1)--->hello10
https://m.baidu.com/sf_zd/question/453883943.html?word=string%20%3D%E2%80%9C%E5%95%8A%E2%80%9D%2B9&ms=1&rid=10141769112821952380
for循环使用break跳出i还自加吗
不加了
Object input=new int[]{1,2};
int[] tranfer=(int[])input;//可以把input[OBJECT类型]转化成int数组
https://www.ppkao.com/tiku/shiti/8795359.html
https://zhidao.baidu.com/question/1499433874910545579.html?word=int%5B%5D%20array%20%3D%20(int%5B%5D)%20obj&ms=1&rid=8820137607817335478
java标识符:
Java标识符由数字,字母和下划线(_),美元符号($)或人民币符号(¥)组成。要求首位不能是数字。最重要的是,Java关键字不能当作Java标识符。
--类加载机制
面试:
—jvm
设计模式
—spring事务?书上那节和spring.xml到底怎么配置的
git还原
首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交1094adb...(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个 版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
现在,我们要把当前版本append GPL回退到上一个版本add distributed,就可以使用git reset命令:
$ git reset --hard HEAD^
HEAD is now at e475afc add distributed
触发器时间
某人数据库笔记https://blog.csdn.net/hushuo0802/article/details/89087942
准备:
多线程的好
https://www.cnblogs.com/liuyangofficial/p/7072595.html
多线程读同一批数据比单的好 多线程管你是做不同任务还是读同一数据块
泛型的应用:
java的类型安全,和类型动态参数化
https://www.cnblogs.com/zjdxr-up/p/8999794.html
不能建索引的情况:
https://blog.csdn.net/nannancctv1/article/details/54629483
程序跑时建索引有什么问题?
mysql两种引擎myisam和innodb:
my不支持事务;存储表的行数,查询频繁的适合;不支持外键;innodb(默认存储引擎)支持事务
https://www.cnblogs.com/lxwphp/p/9847873.html
索引实现之一:b+树
https://www.cnblogs.com/-619569179/p/6525684.html 和https://blog.csdn.net/hellozhxy/article/details/81056428
唯一索引:索引列不能相同
主键索引:唯一的特殊形式,主键上…
什么时候索引失效:(指sql语句不走索引)
https://m.jb51.net/article/50649.htm
和https://bbs.csdn.net/wap/topics/390712904
mysql优化:
sql方面(避免sql不走索引)
索引优化(不建索引的情况)
数据库结构优化:范式优化,消除冗余,拆分了关系https://blog.csdn.net/hellozhxy/article/details/81056428
preparedstatement和statement:
ps预编译,性能高(缺点就是消耗大)动态参数;防止sql注入攻击;
statement=con.createStatement();rs=statement.execute(sql);
ps=con.prepareStatement();
ps.setString();
rs=ps.execute();
https://blog.csdn.net/qq_36071795/article/details/83742892
mybatis和hibernate:
mybatis简单易上手,hibernate更难;hibernate提供了sql的封装和关联关系映射,mybatis工作量更大;mybatis可以优化sql;
https://www.cnblogs.com/inspurhaitian/p/4647485.html
https://blog.csdn.net/eff666/article/details/71332386
map :getOrDefault()
Treemap有:floorKey(K key) 方法用于返回的最大键小于或等于给定的键,或null,如果不存在这样的键;floorEntry()返回一个entry
concurrenthashmap:https://blog.csdn.net/anig2014/article/details/39476801
ConcurrentModificationException异常:https://www.cnblogs.com/dolphin0520/p/3933551.html
comparable和comparator:
内部比较器 外部比较器
https://www.cnblogs.com/xujian2014/p/5215082.html