电信云一面:
1.删除列和添加列的sql
alter table [tablename] add column [colname] 列的数据类型;
alter table [tablename] drop column [colname];
2.varchar和char的区别
区别一:
char 表示定长,长度固定,varchar表示变长,即长度可变。char如果插入的长度小于定义长度时,则用空格填充;varchar小于定义长度时,还是按实际长度存储。
因为其长度固定,会存在空间浪费的情况,但char的存取速度比varchar要快得多,方便程序的存储与查找,是以空间换取时间效率。varchar则刚好相反,以时间换空间。
区别二:
对 char 来说,最多能存放的字符个数 255,和编码无关。
而 varchar 呢,最多能存放 65532 个字符,起始位和结束位占去了3个字节。varchar的最大有效长度由最大行大小和使用的字符集确定。整体最大长度是 65,532字节。
3.布尔类型怎么存
首先mysql是不支持布尔类型的, 当把一个数据设置成布尔类型的时候,数据库会自动转换成tinyint (1)的数据类型,其实这个就是变相的布尔。 默认值也就是1,0两种,分别对应了布尔类型的true和false
4.数据库怎么高可用
高可用通常是指,通过设计减少系统不能提供服务的时间,为实现系统高可用,其架构设计的核心准则是:冗余。
方案一:提高冗余度,多实例运行,用资源换可用性
(1)N+2应该是标配
(2)实例之间必须对等、独立
方案二:变更管理(Change Management)
(1)灰度发布
(2)服务必须对回滚提供支持
5.内存溢出怎么处理,(堆栈参数调整)
-Xms:初始Heap大小
-Xmx:设置heap最大值
-Xmn:设置新生代大小
-XX:PermSize:设定永久代初始大小(jdk7)
-XX:MaxPermSize:设定永久代最大大小(jdk7)
-XX:MetaspaceSize:设置元空间初始大小(jdk8)
-XX:MaxMetaspaceSize:设置元空间最大大小(jdk8)
6.http怎么解决无状态
首先,无状态的理解
1、协议对事物处理没有记忆能力
2、对同一个url请求没有上下文关系,每次的请求都是独立的。
解决方法:保持HTTP状态的技术应运而生,一个是Cookie,另一个是Session。
(1)Cookie将状态保存在客户端,Session将状态保存在服务器端;
(2)Cookie从服务器端发送的响应报文内的一个叫做Set-Cookie的首部字段信息,通知客户端保存Cookie,当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入Cookie值后发送出去。
(3)第一次创建Session的时候,服务端会在HTTP报文中告诉客户端,需要在 Cookie 里面记录一个Session ID,以后每次请求把这个会话ID发送到服务器,服务端就能区分是哪个客户端的请求,当客户禁用cookie时,这个值也可能设置为由get来返回给服务器;
7.session跨域问题怎么解决
(1)Session Sticky :是指让同一客户端的请求,落在同一台服务器上,因为不会落在别的服务器上,所以自然就不会出现跨域问题。但是这个方案的缺点非常的明显,就是不管比采用什么算法,用户的请求落在哪一台服务器上都是由用户来决定的,可能会造成单点压力,并且如果一台服务器出问题,可能会造成一片区域的人无法访问
(2)Session复制 :是指服务器之间互相同步session信息,也就是说每台服务器上都保存着所有的session信息。这样做的缺点也是非常明显的。上文提到过,session是存在内存中的,会严重影响服务器性能,当然,你也可以把他存在数据库中,但是这会大大影响响应速度。还有一个缺点就是,当访问量过大时,由于互相同步的问题,会造成大量的网络开销
(3)Session集中存储:是指把Session集中存储在一个第三方的服务器中。当需要访问的时候,都去这个服务器去查。这样做也有不小的缺点,首先是单点问题,如果这个服务器宕机,那么所有的服务都是不可用的,所以这里必须做集群,会浪费服务器资源。还有一点是,每次验证都需要来这个服务器来查,会凭白增加一次网络开销,降低访问速度
(4)Cookie :状态信息不再保存在服务端,而是保存在客户端,客户端每次访问服务器的时候,把这个信息带给服务器。但是Cookie也有不少问题,最被人关注的就是安全问题,因为信息是保存在客户端的,就比较容易被人盗取、篡改,当然这些安全问题都是有解决方案的,这不是限制Cookie的主要原因,真正限制Cookie的原因是很多设备不支持Cookie
(5)Token :和Cookie类似,Token也是由客户端来维持状态的,信息存储在客户端内,具有平台无关性。Token实质上是服务端给客户端的一个字符串,上面包含着一些验证信息,相当于一个身份令牌,你拿着这个令牌就能得到他的服务。相比较于Cookie,Token更加的灵活,可以在任何地方生成,基于Token的权限系统是非常容易实现的
Cookie,Session,Token 区别
8.tomcat负载均衡
9.响应包,状态码
请求报文:
请求行:
①是请求方法,GET和POST是最常见的HTTP方法,除此以外还包括DELETE、HEAD、OPTIONS、PUT、TRACE。
②为请求对应的URL地址,它和报文头的Host属性组成完整的请求URL。
③是协议名称及版本号。
请求头:
④是HTTP的报文头,报文头包含若干个属性,格式为“属性名:属性值”,服务端据此获取客户端的信息。
与缓存相关的规则信息,均包含在header中
请求体:
⑤是报文体,它将一个页面表单中的组件值通过param1=value1¶m2=value2的键值对形式编码成一个格式化串,它承载多个请求参数的数据。不但报文体可以传递请求参数,请求URL也可以通过类似于“/chapter15/user.html? param1=value1¶m2=value2”的方式传递请求参数。

响应报文:
响应行:
①报文协议及版本;
②状态码及状态描述;
响应头:
③响应报文头,也是由多个属性组成;
响应体:
④响应报文体,即我们真正要的“干货”

在http协议中,状态码被分为了5大类
100~199(信息性状态码)
200~299(成功状态码)
300~399(重定向状态码)
400~499(客户端错误状态码)
500~599(服务器端错误状态码)
100:继续 客户端应当继续发送请求。客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应。
101: 转换协议 在发送完这个响应最后的空行后,将会切换到在Upgrade 消息头中定义的那些协议。只有在切换新的协议更有好处的时候才应该采取类似措施。
102:继续处理 由WebDAV(RFC 2518)扩展的状态码,代表处理将被继续执行。
200:请求成功 处理方式:获得响应的内容,进行处理
201:请求完成,结果是创建了新资源。新创建资源的URI可在响应的实体中得到 处理方式:爬虫中不会遇到
202:请求被接受,但处理尚未完成 处理方式:阻塞等待
204:服务器端已经实现了请求,但是没有返回新的信 息。如果客户是用户,则无须为此更新自身的文档视图。 处理方式:丢弃
300:该状态码不被HTTP/1.0的应用程序直接使用, 只是作为3XX类型回应的默认解释。存在多个可用的被请求资源。 处理方式:若程序中能够处理,则进行进一步处理,如果程序中不能处理,则丢弃
301:请求到的资源都会分配一个永久的URL,这样就可以在将来通过该URL来访问此资源 处理方式:重定向到分配的URL
302:请求到的资源在一个不同的URL处临时保存 处理方式:重定向到临时的URL
304:请求的资源未更新
400:非法请求
401:未授权 处理方式:丢弃
403:禁止 处理方式:丢弃
404:没有找到 处理方式:丢弃
500:服务器内部错误 服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个问题都会在的源代码出现错误时出现。
501:服务器无法识别 服务器不支持当前请求所需要的某个功能。当服务器无法识别请求的方法,并且无法支持其对任何资源的请求。
502:错误网关 作为网关或者工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
503:服务出错 由于临时的维护或者过载,服务器当前无法处理请求。这个状况是临时的,并且将在一段时间以后恢复。
10.synchronize在代码块和函数体的区别
synchronize修饰函数体时:
作⽤于当前对象实例加锁,进⼊同步代码前要获得当前对象实例的锁
synchronize修饰代码块时:
对给定对象加锁,进⼊同步代码库前要获得给定对象的锁。
synchronize修饰静态方法:
也就是给当前类加锁,会作⽤于类的所有对象实例,因为静态成员不属于任何一个实例对象,是类成员( static 表明这是该类的⼀个静态资源,不管new了多少个对象,只有⼀份)。所以如果⼀个线程A调⽤⼀个实例对象的⾮静态 synchronized ⽅法,⽽线程B需要调⽤这个实例对象所属类的静态 synchronized⽅法,是允许的,不会发⽣互斥现象,因为访问静态synchronized ⽅法占⽤的锁是当前类的锁,⽽访问⾮静态 synchronized ⽅法占⽤的锁是当前实例对象锁。
场景:当同一个类中多个synchronize修饰的方法被多个线程调用,获取的都是这个类的对象实例,因此只有一个线程在执行,其他线程阻塞。而修饰代码块时只是锁定给定对象。
11.10加到50 不用乘除,循环,条件语句
12.解压包的命令
13.进程通信方式
14.对云计算的理解,云计算的一些关键词
15.研究方向
16.自然语言处理有了突破是哪一个节点
17.论文研究内容
18.专利聚类使用场景
19.与其他专利检索系统的不同
20.用什么语言,怎么验证的
21.用了什么python库
22.反问
老虎一面:
1.为什么使用websocket
2.java进程的启动过程
3.线程具体共享进程哪些资源
4.jvm进程中常见的线程
5.守护线程与非守护线程的区别
6.线程状态
7.什么情况进入阻塞状态,什么时候进去等待状态
8.什么是事务
9.事务隔离级别
10.mvcc
11.幻读和不可重复读的区别
12.小写字母a-z,组成长度为8的字符串,设计hash算法,尽量碰撞少
13.tcp连接建立过程
14.三次握手状态,为什么需要三次握手
15.rst
16.流量控制和拥塞控制的区别
17.arq协议
18.单链表相邻节点交换
美团一面:
1.密码生成
2.发邮件
3.聊天室介绍
4.websocket特性
5.redis在项目中的使用
6.redis特性,数据类型,跳表,level多少(32),持久化,哨兵,为什么用单线程,io多路复用
7.mysql引擎存储索引结构。
7.innorDB和mysiam比较,事务实现。
8.索引,哪用到了。
9.查询优化
10.线程池,核心参数,使用过程。
11.spring特性。如何配置bean,IOC
12.git,maven命令
13.url访问过程
15.垃圾回收算法
16.jvm内存结构,哪个不会OOM,模拟OOM
17.http请求响应结构。状态码
18.类加载机制,双亲委派原则,破坏双亲委派(tomcat)
19.反问
美团二面:
1.数据结构及算法在哪了解的
2.项目中redis与数据库怎么配合
3.sql语句,怎么建索引,为什么
4.缓存击穿,穿透,雪崩怎么规避
5.两个进程,汇报访问内存地址赋值,会冲突吗
- volatile
7.tcp怎么保证可靠
8.threadlocal
9.数组中找第K小的值
10.方法命名问题
11.n个不重复的数随机选m个不重复的数
12.除了项目,平时还在做什么有意思的东西
13.看过哪些源码
14.学习能强体现在那里
15.项目工作多久完成的
16.对语言有什么个人倾向吗
17.职业发展规划
18.手头offer,面了哪些哪些公司
19.个人倾向的公司
20.美团技术栈相符90%
21.反问
美团hr面:
1.对秋招体验怎么样。
2.秋招投递了什么公司
3.阿里,头条怎么没有投。之前在实习吗?感觉流程有点慢
4.哪里人
5.找工作比较看重哪些
6.之前为什么不考虑阿里,(杭州)
7.成长过程中影响最深得事件和人
8.社团介绍
9.最初得想法
10.遭遇过得挫折和沮丧得事情
11.在团队中得角色
12.发生矛盾怎么解决
13.做完项目之后得复盘和思考
14.团队氛围
15.第一份工作得团队是怎么样得
16.第一份工作想要收获什么
17.性格
18.人生转变
京东一面:
1.数据库什么引擎,什么特点,索引有什么特点,B+树有什么优势。
2.聚簇索引比非聚簇索引有什么优势,劣势。
3.维护索引有什么代价。
4.事务怎么实现。
5.默认隔离级别。
6.oracle有了解吗。
7.分页:查第1页和查第10000页有什么区别。性能上有不同吧。
8.群聊用什么技术。
9.tcp/udp区别。
10.流量很大,用数据库抗吗?
11.数据库连接池,遇到过什么问题吗。
12.项目过程中难点。
13.java异常哪几种。
14.运行时异常和编译异常的区别。
15.项目事务如何使用。
16.使用事务哪种异常可以回滚,如何让编译异常回滚。
17.arrayList排序。
18.单例。
- volatile作用。
20.怎么用springboot。
21.看什么技术方面的书。
22.看了高并发对自己有什么长进。
23.实习时间。
24.反问。
京东二面:
1.java异常
2.静态变量与实例变量的区别
3.反射机制,应用
4.单例模式
5.redis在项目中的应用
京东hr面:
1.本科专业
2.平时项目
3.流量。项目对外
4.java学习方式
5.刷题方式
6.对京东健康的了解
7.用过京东健康的产品
8.职业规划
9.家乡
10.除了京东,还有投其他公司
11反问
58同城一面:
1.redis怎么应用
2.如何实现聊天内容屏蔽
3.上线后历史记录如何获取
4.用户发消息,先更新缓存还是数据库, 如果写缓存失败怎么处理
5.redis的分布式锁
6.怎么释放锁,过期时间过了,任务没完成怎么办
7.hashMap底层
8.B+树
9单例模式
10.tcp为什么三次握手,四次挥手
11.流量控制和拥塞控制
12.tcp交换应用
13.查看端口下有多少tcp连接
14.awk统计日志访问时间
15.sql年龄第二的人
16.sql优化,慢查询
17.数据库编码。
18.varchar存多少个字符
19.快排空间复杂度,时间复制度
20.树中两个节点的距离。
21.int a,b 有几个位是不一样的。(int 几个字节)
22.有序链表删除重复节点
23.反问
京东实习一面:
1.你的特长
2.url过程
3.页面视图用什么模板
4.php和java区别
(1)PHP编写代码,无需编译,直接呈现结果,而JAVA需要重新编译运行才能看到结果。
(2)安全性不高,容易被修改代码,而JAVA项目看不到源代码,安全性高。
(3)PHP框架较少,层次划分不明显,JAVA通过MVC思想层次逻辑划分明显。
5.websokect和普通sokect有什么区别
6.页面怎么实现websokect,后台怎么保持长连接
7.后台怎么处理websokect请求
8.redis在项目中的使用
9.redis数据类型
10.java中的doulbe占几个字节
11.怎么遍历MAP
12.怎么获取页面的请求参数
13.页面参数怎么和类的参数对应
14.二级评论怎么实现
15.用过的一些框架
16.研究方向
京东实习二面:
1.如何学习
2.java方面的书
3.java虚拟机的内容
4.写程序的时候用到java虚拟机中的知识
5.mybatis怎么使用
6.怎么学习mybatis
7.sql优化
8.单表查询和jion on的选择( 以小数据集去驱动大数据集的联查思路)
美团实习一面:
1.潜克隆和深克隆。序列化(深克隆)。如何实现泛型。
2.拆箱装箱。equals与==区别
3.类加载,双亲委任
4.hashmap解决冲突方法。hashmap链地址法介绍。hashmap扩容
5.ArrayList与LinkedList。ArrayList扩容
6.容器中线程安全的组件。ConcurrentHashmap
7.GC垃圾回收算法和G1
8.IOC。AOP实现原理
9.mybatis防止SQL注入
10.spring循环依赖
11.数据库四大特性及隔离级别。读提交有什么问题。mysql默认的是什么。mysql怎么解决幻读问题。
12.mysql索引结构,为啥用B+。联合索引。
13.http哪一层。tcp三次握手,四次挥手。https。http2.0
14.url整个过程。(浏览器到服务端)
15.进程和线程。创建过程谁消耗大,为什么。 临界区。
16.Linux常见命令。
17.git marge 与 git rebase 区别
18.死锁。java锁机制
19.进程同步方法
20.堆和栈区别
21.150大米,2G,7G砝码,最少次数分成70,80
22.写单例(线程安全)
23.10层,一层1步或2步。几个走法。 (dp)
24.想问面试官什么。
美团实习二面:
1.做项目遇到得问题,怎么解决。
2.聊天室人数变多,瓶颈在哪? 怎么解决。
3.段页式内存管理,虚拟内存。
4.磁盘调度策略。
5.动态规划和分治法。相同和不同。 什么情况下必须用动态规划,不能用分治。
6.什么是一致性hash算法。使用场景。
7.负载均衡中一致性hash得优缺点。 加权算法为什么在负载均衡中好。
8.float,double 与 0 做比较。
9.b树和b+树得区别。
10.面向对象三大特征。
11.多态怎么实现。
12.重载和重写。重载只有返回值不同为什么不行。底层原理。(自己开发语言的话)如何设置成可行得,在哪做调整。
13.redis数据结构类型。持久化策略。
14.判断单链表是否有环。写测试用例。
15.有啥想问得。