0723电话面试整理

问题总结

1、css熟悉吗,你用过弹性盒子布局,那么弹性盒子布局要怎么保证兼容性(各个不同浏览器核心的兼容性问题)
CSS弹性盒子兼容写法
通过这种兼容写法,为不同的浏览器内核配置不同的写法,能够解决绝大部分兼容性问题,时间比较紧,没有深入研究太多

2、cookie和session为什么存在
借鉴资料
当用户在发送一个请求关得到返回信息之后,客户端与服务器端之间的网络连接就已经断开了,在下一个请求发送时,服务器无法确定这次请求和上次的请求是否来自同一个客户端。也就是说,服务器不能记住”记住”用户,这是 http 协议的限制,http 是无状态的协议在web应用程序中,实际上是经常需要记住每次请求的。那么,如何让服务器知道不同的请求是否来自同一个客户端,就是状态管理问题出现了session和cookie。

3、SpringIOC/DI了解嘛,依赖注入的几种方式,你常用的哪种

IOC与DI的关系其实是站在不同描述角度上来描述同一个问题
IOC是控制反转,DI是依赖注入
【IOC和DI说的一回事,但是是从不同的角度来说的】
IOC是由容器控制了对象的生命周期和创建方式,反转了由new而创造出来的对象生成方式。

DI指的是:应用程序 依赖 IOC容器 为程序中对象 注入 所需要的资源

4、SpringAop了解过么

Aop是面向切面的编程,其主要作用是在不改变方法的情况下增强方法,大多数在于日志输出和权限控制上。
概念上它可以分为:
切面Aspect,切点PointCut,连接点JoinPoint,通知Advice。
其中切面是由切点通知组成的类的称呼
切点是对无数个连接点组成的
通知有多个通知方式,

5、static的作用,变量和方法如果是静态的,那么他们会存在JVM中的哪里

JVM资料
JVM内存总体一共分为了
4个部分(stack segment、heap segment、code segment、data segment)
当我们在程序中,申明一个局部变量的时候,此变量就存放在了 stack segment(栈)当中;
当new 一个对象的时候,此对象放在了heap segment(堆)当中;
而static 的变量或者字符串常量 则存在在 data segment(数据区)中;
那么类中方法的话,是存在在 code segment(代码区)中了。

6、你了解过JVM的堆嘛,堆你知道里面还分成什么嘛

JVM堆的划分

在这里插入图片描述
   JAVA为了优化GC回收的效率,所以对堆进行划分,主要分为三大部分:新生代,老年带和永久代
  因为每一次GC回收都会对堆中的所有对象进行遍历,所以划分不同的代是让性能更优化的方法。
  新创建的对象会在新生代中分配内存,经过多次回收仍然存活下来的对象存放在老年代中,静态属性、类信息等存放在永久代中,新生代中的对象存活时间短,只需要在新生代区域中频繁进行GC,老年代中对象生命周期长,内存回收的频率相对较低,不需要频繁进行回收,永久代中回收效果太差,一般不进行垃圾回收,还可以根据不同年代的特点采用合适的垃圾收集算法。分代收集大大提升了收集效率,这些都是内存分代带来的好处。

7、LINUX的常用命令
cd vim tail -n jps -l nohup java -jar … & ll grep等正常部署JAR包的命令

8、对于JAVA的异常你了解哪些,对于异常你平时在工作中有过处理嘛
异常处理机制
Java标准裤内建了一些通用的异常,这些类以Throwable为顶层父类。

Throwable又派生出Error类和Exception类。

错误:Error类以及他的子类的实例,代表了JVM本身的错误。错误不能被程序员通过代码处理,Error很少出现。因此,程序员应该关注Exception为父类的分支下的各种异常类。

异常:Exception以及他的子类,代表程序运行时发送的各种不期望发生的事件。可以被Java异常处理机制使用,是异常处理的核心。

总体上我们根据Javac对异常的处理要求,将异常类分为2类。

非检查异常(unckecked exception):Error 和 RuntimeException 以及他们的子类。javac在编译时,不会提示和发现这样的异常,不要求在程序处理这些异常。所以如果愿意,我们可以编写代码处理(使用try…catch…finally)这样的异常,也可以不处理。对于这些异常,我们应该修正代码,而不是去通过异常处理器处理 。这样的异常发生的原因多半是代码写的有问题。如除0错误ArithmeticException,错误的强制类型转换错误ClassCastException,数组索引越界ArrayIndexOutOfBoundsException,使用了空对象NullPointerException等等。

检查异常(checked exception):除了Error 和 RuntimeException的其它异常。javac强制要求程序员为这样的异常做预备处理工作(使用try…catch…finally或者throws)。在方法中要么用try-catch语句捕获它并处理,要么用throws子句声明抛出它,否则编译不会通过。这样的异常一般是由程序的运行环境导致的。因为程序可能被运行在各种未知的环境下,而程序员无法干预用户如何使用他编写的程序,于是程序员就应该为这样的异常时刻准备着。如SQLException , IOException,ClassNotFoundException 等。

需要明确的是:检查和非检查是对于javac来说的,这样就很好理解和区分了。

9、多线程在工作中使用过嘛,我说没用过就没再问了。

JAVA多线程看着一篇就够了!

10、设计模式能说一下嘛。

   这里简单的介绍了设计模式的原理和这个思想所要让类高内聚低耦合,对扩展开放,对修改关闭

11、说一下JAVA的集合

  JAVA集合详解资料
大体上来说:
  集合分为两大接口,一个接口是collection接口,另一个则是Map接口,collection接口又是由List接口和Set接口继承;

常用集合的分类:
Collection 接口的接口 对象的集合(单列集合)
├——-List 接口:元素按进入先后有序保存,可重复
│—————-├ LinkedList 接口实现类, 链表, 插入删除, 没有同步, 线程不安全
│—————-├ ArrayList 接口实现类, 数组, 随机访问, 没有同步, 线程不安全
│—————-└ Vector 接口实现类 数组, 同步, 线程安全
│ ———————-└ Stack 是Vector类的实现类
└——-Set 接口: 仅接收一次,不可重复,并做内部排序
├—————-└HashSet 使用hash表(数组)存储元素
│————————└ LinkedHashSet 链表维护元素的插入次序
└ —————-TreeSet 底层实现为二叉树,元素排好序

Map 接口 键值对的集合 (双列集合)
├———Hashtable 接口实现类, 同步, 线程安全
├———HashMap 接口实现类 ,没有同步, 线程不安全-
│—————–├ LinkedHashMap 双向链表和哈希表实现
│—————–└ WeakHashMap
├ ——–TreeMap 红黑树对所有的key进行排序
└———IdentifyHashMap

数据结构
ArrayXxx:底层数据结构是数组,查询快,增删慢
LinkedXxx:底层数据结构是链表,查询慢,增删快
HashXxx:底层数据结构是哈希表。依赖两个方法:hashCode()和equals()
TreeXxx:底层数据结构是二叉树。两种方式排序:自然排序和比较器排序

13、你对攻击了解哪些,比如sql注入,XSS攻击等

XSS攻击详解
 XSS攻击我了解为通过输入框将html标签等恶意拼接字段篡改原页面,或新加脚本,存到数据库中,由用户再次调用该脚本时,受到XSS攻击,被窃取cookie等。

SQL注入
  1、#将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。
如:where username=#{username},如果传入的值是111,那么解析成sql时的值为where username=“111”, 如果传入的值是id,则解析成的sql为where username=“id”. 
  2、$将传入的数据直接显示生成在sql中。
如:where username=${username},如果传入的值是111,那么解析成sql时的值为where username=111;
如果传入的值是;drop table user;,则解析成的sql为:select id, username, password, role from user where username=;drop table user;
  3、#方式能够很大程度防止sql注入,$方式无法防止Sql注入。
  4、方式一般用于传入数据库对象,例如传入表名.
  5、一般能用#的就别用$,若不得不使用“${xxx}”这样的参数,要手工地做好过滤工作,来防止sql注入攻击。
  6、在MyBatis中,“${xxx}这样格式的参数会直接参与SQL编译,从而不能避免注入攻击。但涉及到动态表名和列名时,只能使用“${xxx}”这样的参数格式。所以,这样的参数需要我们在代码中手工进行处理来防止注入。

DDOS攻击与反射攻击详解

DNS攻击
三种手段:第一种DNS攻击类型被称为缓存中毒攻击,这种攻击发生在攻击者成功将恶意DNS数据注入到递归DNS服务器(由很多ISP运作)之后。第二种类型的DNS攻击需要攻击者掌控一个或多个授权DNS服务器。 第三种类型的DNS攻击也是很棘手的问题。这种攻击是攻击者攻击域本身的注册,然后使用这种访问来更改分配到它的DNS服务器。

反射攻击
在DNS反射攻击手法中,假设DNS请求报文的数据部分长度约为40字节,而响应报文数据部分的长度可能会达到4000字节,这意味着利用此手法能够产生约100倍的放大效应。因此,对于.CN遇袭事件,攻击者只需要控制一个能够产生150M流量的僵尸网络就能够进行如上规模(15G)的DDoS攻击。据不完全统计,国内外总计有超过250W台开放DNS服务器可以充当这种“肉鸡”,开放的DNS服务器简直是互联网上无处不在的定时炸弹。

14、什么是正向代理,什么是反向代理

  正向代理直观来说就是为客户端的请求包装代理后发送给服务器,能够让服务端不知道发送请求的具体客户端是哪个;做爬虫的时候会用来绕过IP访问限制的反扒操作
  反向代理直观来说是把客户端的请求接过来,并由代理服务器向服务器发送请求,这个时候能够防止各种WEB攻击,能够隐藏服务器的IP地址。
正向:服务器不是道客户端是谁
反向:客户端不知道服务器是谁

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值