随手科技(随手记)2017招聘Java工程师笔试题
一 如何解决多台web服务器粘性会话的问题?
粘性session:web服务器会把某个用户的请求,交给tomcat集群中的一个节点,以后此节点就负责该保存该用户的session,如果此节点挂掉,那么该用户的session也会消失。
非粘性session:通过负载均衡器会根据节点的情况,把用户的请求进行分发,也就是会复制多份session分发给多个节点,这样,如果节点中其中一个session挂掉的话,其它的还能继续工作,也就是只要有一个节点没有挂掉,该用户的信息就不会消失:
1. 利用Memcache/Redis共享Session数据:搭建Memcache/Redis集群,将用户Session写入Memcache/Redis,设置key值的有效期,即Session的有效期。一般来说缓存的并发性能高于数据库,这个方法可以获得较大的负载量
2 利用数据库共享Session数据:创建一个数据库库专门存放用户Session,用户登录一次插入一条数据(如果第一次登录),并由程序去维护Session的时效性。这个做法的弊端是,数据库的负担很大而且本来就是容易产生瓶颈的地方,日活的增加导致性能问题。
二 假如某项目上线后,系统经常出现宕机或者假死,请问应该从哪几个方面去分析解决?
三 描述一下常见一些hash算法的应用场景
1. 校验安装文件的完整性,在软件部署的时候,计算软件包当前的哈希值是否与预设值相等,防止软件包被篡改或被替换
2. 存储和校验用户口令,用户口令不能用明文存储,更进一步,如果系统不知道用户口令明文,那就更好了,而哈希算法就可以做到既不知道用户明文,又可以校验用户口令
3. 作为数据库表分区的分区条件
四 假如有100W个敏感词汇表,如何从一段网络文章里快速找出是否存在敏感词。
https://www.cnblogs.com/AlanLee/p/5329555.html
五 请描述ThreadLocal的作用以及使用场合,在程序中用来传递数据合适不合适?
ThreadLocal并不是一个Thread,而是Thread的局部变量。针对每个线程提供自己的变量版本,每个线程维护自己的版本,彼此独立,修改不会影响到对方,避免线程冲突。譬如在Web开发中,存放一次请求的Context。在程序中传递数据是不合适的,ThreadLocal携带多个线程变量版本,传递数据浪费性能
六 请描述一下系统信息安全方面的一些常见攻击手段与预防方法?
1 口令破解:可以采用字典破解和暴力破解来获得口令。
2 IP欺骗::攻击者可以通过伪装成被信任的IP地址等方式来获取目标的信任。这主要是针对防火墙的IP包过滤以及LINUX/UNIX下建立的IP地址信任关系的主机实施欺骗。
3 DNS欺骗:由于DNS服务器相互交换信息的时候并不建立身份验证,这就使得黑客可以使用错误的信息将用户引向错误主机。
5 DdoS攻击 :DdoS攻击(Distributed Denial of Server,分布式拒绝服务)是一种基于DOS的特殊形式的拒绝服务攻击,是一种分布协作的大规模攻击方式,主要瞄准比较大的站点,像商业公司、搜索引擎和政府部门的站点。他利用一批受控制的机器向一台目标机器发起攻击,这样来势迅猛的攻击令人难以防备,因此具有很大的破坏性。
6 缓冲区溢出攻击(buffer overflow)
通过往程序的缓冲区写超过其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其他指令,以达到攻击的目的。缓冲区溢出是一种非常普遍、非常危险的漏洞,在各种操作系统、应用软件中广泛存在,根据统计:通过缓冲区溢出进行的攻击占所有系统攻击总数的80%以上。利用缓冲区溢出攻击可以导致程序运行失败、系统死机、重新启动等后果,更严重的是,可以利用他执行非授权的指令,甚至可以取得系统特权,进而进行各种非法操作。由于他历史悠久、危害巨大,被称为数十年来攻击和防卫的弱点。
社交工程(Social Engineering)
七 请列举几个Linux常见命令:
实时查看服务器日志文件内容
tail -f
修改文件用户所有者以及所在组
查看服务器内存使用情况
free
查找进程名称包括tomcat的进程ID
ps -ef|grep tomcat
查看服务器磁盘空间使用情况
dh -f
查看服务器IO压力情况
top
检测连接到服务器每个节点的连接速度
netstat -an
创建一个/local/usr/mysql/dbfile到/data/mysql/dbfile目录的软链接
ln -s /local/usr/mysql/dbfile/ /data/mysql/dbfile/
八 在多服务器集群部署的情况下,如何避免并发带来的问题,比如一个理财产品剩余金额为10000,如何应对抢购?
解决秒杀抢购类的关键思路是:尽量将请求拦截在系统上游,减轻数据库压力
1 最简单的方式是采用数据库事务处理,由于数据库并发量有效,无法应对极大流量的抢购
当某用户进入抢购时,假定一个用户只能抢购一份,执行事务伪代码如下:
begin transaction;
select balace from 产品表 where product_id = xx for update;
if(balace<1) return;
...创建订单
update 产品表 set balace=balace-1;
end transaction;
2 采用Redis的事务功能和Watch特性,可以承受较大并发量
http://blog.csdn.net/e421083458/article/details/49741451
http://www.cnblogs.com/longtaosoft/p/6627568.html
九 Java中自带哪些线程池,分别的应用场景是什么?
Java通过Executors提供四种线程池,分别为:
newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。
newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。
newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。
newSingleThreadExecutor 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行
http://cuisuqiang.iteye.com/blog/2019372
http://www.importnew.com/16797.html
十 mysql数据库有以下三个表及字段说明:
Columns of "Person" Table,人员表 | ||
Column Name | DataType | Comment |
pcode | int | 人员代码,主键 |
name | varchar(100) | 姓名 |
gender | varchar(10) | 性别 |
age | int | 年龄 |
org_code | int | 所在单位的单位代码,外键 |
varchar(100) | 电子邮件 |
Columns of "Organization" Table,单位表 | ||
Column Name | DataType | Comment |
org_code | int | 单位代码,主键 |
name | varchar(100) | 单位名称 |
province | varchar(100) | 单位所在省份或者直辖市 |
Columns of "UserGroup" Table,人员角色表 | ||
Column Name | DataType | Comment |
pcode | int | 人员代码 |
group_no | varchar(10) | 角色码,“20”:项目负责人,“10”:单位联络人 |
A 由于深圳大学的邮箱发生变更,需要紧急将深圳大学所有单位联络人的邮箱(eg:zhangshan@szdx.edu.cn),域名"szdx.edu.cn"从替换成"szu.edu.cn",请写出SQL语句
update person set email = replace(email, 'szdx,edu.cn', 'szu.edu.cn')
where email like '%szdx.edu.cn' and org_code in (select org_code from organization where name = '深圳大学')
and pcode in (select pcode from usergroup where group_no = '10')
B 现在要查询出北京市每个单位的单位联络人平均年龄,请写出SQL语句,结果输出:单位代码,单位名称,平均年龄
select p.org_code as 单位代码,o.name as 单位代码, avg(p.age) as 平均年龄 from person p left join organization o on p.org_code = o.org_code where pcode in (select pcode from usergroup where group_no = '10')
group by o.org_code
C 统计全国每个单位的项目负责人年龄小于40岁的人数,结果输出:单位代码,单位名称,人数
select p.org_code as 单位代码,o.name as 单位代码, count(p.age) as 人数 from person p left join organization o on p.org_code = o.org_code where pcode in (select pcode from usergroup where group_no = '20') and p.age < 40
group by o.org_code
随手科技(随手记)2017招聘Java工程师笔试题的更多相关文章
- Java工程师笔试题整理[校招篇]
Java工程师笔试题整理[校招篇] 隔着两个月即将开始校招了.你是不是也想借着这个机会崭露头角,拿到某些大厂的offer,赢取白富美.走上人生巅峰?当然如果你还没能打下Java基础,一定要先打 ...
- 友金所招聘Java工程师面试题
友金所是一家位于深圳南山科技园的P2P网贷公司,用友集团控股.该公司采用渐进式的问答面试,没有笔试题.比如面试者说熟悉多线程,面试官就问哪些方式解决并发:面试者说采用Synchronized或者Ree ...
- 2019 智联招聘java面试笔试题 (含面试题解析)
本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.智联等公司offer,岗位是Java后端开发,因为发展原因最终选择去了智联,入职一年时间了,之前面试了很多家公 ...
- 阿里巴巴集团2016校园招聘-Python工程师笔试题(附加题+部分答案)
前言 第一次网上笔试,被虐的很惨.一是不太习惯,最主要的是还是自己对Python的掌握,还不够熟练.下面是这次阿里笔试相关信息 笔试时间是,2015年8月23日,10:00——12:00 对于笔试题, ...
- 2019年跨越速递Java工程师笔试题
1.下面哪个选项可以用于JSP页面之间传递对象(A C) A application B page C session D error E response 评语:这道题考察的是对JSP内置对象的了 ...
- 北京南天软件java工程师面试题
此试题为北京南天软件java工程师面试题(部分) 一.单项选择 (1)下列关于构造方法的叙述中,错误的是(C) A.java语言规定构造方法名与类名必须相同 B.java语言规定构造方法没有返回值,但 ...
- 复盘鼎甲科技2020web开发工程师-笔试题(校招)
复盘鼎甲科技2020web开发工程师-笔试题(校招) 本试卷以W3C规范为准,JavaScript使用ES5标准,除特别说明外,不考虑各个浏览器之间差异. 一.多项选择题 以下标签是行内元素(inli ...
- 转:一份基础的嵌入式Linux工程师笔试题
一. 填空题: 1. 一些Linux命令,显示文件,拷贝,删除 Ls cp rm 2. do……while和while……do有什么区别? 3. Linux系统下.ko文件是什么文件?.so文件是什么 ...
- 非常全面的java基础笔试题
下面是java基础笔试题,当时我去笔试,做了1个小时(80道选择题,后面的简答题就没时间做了),结果很吓人,太挫了,最后被面试官忽悠去培训去了,呵呵.我偷偷把面试题弄了下来,用来学习吧,也希望能对你们 ...
随机推荐
- Token令牌管理权限
什么是token HTTP是一种无状态的协议,也就是HTTP没法保存客户端的信息,没办法区分每次请求的不同. Token是服务器生成的一串字符,作为客户端请求的令牌.当第一次登陆后,服务器会分发Ton ...
- verilog 仿真时读取txt文件
:]data; initial begin # clk =; clk = ~clk; end initial begin # rst=; # rst=; end :]data_sin[:]; //// ...
- BeautifulSoup总结
1. 参考 Beautiful Soup 4.2.0 文档 Beautiful Soup Documentation (4.4.0 英文部分内容有别于4.2.0中文) CSS 选择器参考手册 阮一峰 ...
- openKM部署二次开发,eclipse环境
1.下载openKM_install_forwin安装包,配置jdk环境,start openKM,访问localhost\OpenKM,用户:okmAdmin 密码:admin.查看是否启动成功.安 ...
- 洛谷P4482 [BJWC2018]Border 的四种求法 字符串,SAM,线段树合并,线段树,树链剖分,DSU on Tree
原文链接https://www.cnblogs.com/zhouzhendong/p/LuoguP4482.html 题意 给定一个字符串 S,有 q 次询问,每次给定两个数 L,R ,求 S[L.. ...
- 【Java】 剑指offer(30) 包含min函数的栈
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min ...
- 解决 gem 添加sources的时候提示 too many connection resets的问题
今天在安装ruby.gem的时候,发现在添加淘宝源的时候提示出错信息:"too many connection resets-",后来发现淘宝镜像已经没有了,改成ruby chin ...
- es6学习笔记-Symbol
概述 ES5 的对象属性名都是字符串,这容易造成属性名的冲突.比如,你使用了一个他人提供的对象,但又想为这个对象添加新的方法(mixin 模式),新方法的名字就有可能与现有方法产生冲突.如果有一种机制 ...
- cons-跨域请求
当一个资源从与该资源本身所在的服务器不同的域或端口不同的域或不同的端口请求一个资源时,资源会发起一个跨域 HTTP 请求. 出于安全考虑,浏览器会限制从脚本内发起的跨域HTTP请求.例如,XMLHtt ...
- __x__(6)0905第二天__标签属性=“值”
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...