19应届java面试经历

--------------------------------------------------上海软中信息面试:
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.htmlhttps://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

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值