随手科技(随手记)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道选择题,后面的简答题就没时间做了),结果很吓人,太挫了,最后被面试官忽悠去培训去了,呵呵.我偷偷把面试题弄了下来,用来学习吧,也希望能对你们 ...
随机推荐
- Google Android SDK开发范例大全笔记 二
网络设备管理相关相关 代码地址 1 WifiManager LocationManager分别控制 wifi及GPS WifiManager 判断网络状态 ,LocationManager判断定位状态 ...
- java 获取用户ip
JSP里,获取客户端的IP地址的方法是: request.getRemoteAddr() 这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实I ...
- php正则验证车牌格式的函数
/** * 判断是否合法车牌号 * @name isCarLicense * @param $license * @return bool */ function isCarLicense($lice ...
- CoopyIII开发文档之控制LED灯开关
作者:那年:QQ:843681152 一. CooplyIII环境的搭建 工欲善其事必先利器,如何搭建CooplyIII的开发环境是一切coolpyIII开发的前提.CoolpyIII作者内cool超 ...
- CodeForces 528D Fuzzy Search 多项式 FFT
原文链接http://www.cnblogs.com/zhouzhendong/p/8782849.html 题目传送门 - CodeForces 528D 题意 给你两个串$A,B(|A|\geq| ...
- 毕向东—Java基础知识总结(超级经典)
Java基础知识总结(超级经典) 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java ...
- Linux安装Tomcat-Nginx-FastDFS-Redis-Solr-集群——【第九集-补充-之安装iptables】
1,安装完了jdk,tomcat,启动tomcat的bin/startup.sh后,发现在浏览器输入公网ip地址和tomcat的默认(server.xml)中的端口port:8080,无法访问,这主要 ...
- 合并K个排序链表
合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [ 1->4->5, 1->3->4, 2->6 ] 输出: 1-&g ...
- 自定义InputFormat和OutputFormat案例
一.自定义InputFormat InputFormat是输入流,在前面的例子中使用的是文件输入输出流FileInputFormat和FileOutputFormat,而FileInputFormat ...
- Python requests--初识接口自动化
requests模块初级宝典:http://docs.python-requests.org/zh_CN/latest/user/quickstart.htmlrequests模块之葵花宝典:http ...