一轮技术面
面试官很年轻,二十七八的样子清秀友善。
1. 项目介绍,自己主要负责的模块等。
2. Linux 查询cpu的命令 参照http://www.sijitao.net/2016.html
Top 指令
3. Radis的理解用过哪些?
键值对、set等
参考http://www.runoob.com/redis/redis-lists.html
List 的使用lpop 、rpop:分别为删除头部和尾部
//连接本地的 Redis 服务
Jedis jedis = newJedis("localhost");
System.out.println("连接成功");
//存储数据到列表中
jedis.lpush("site-list","Runoob");
jedis.lpush("site-list","Google");
jedis.lpush("site-list","Taobao");
// 获取存储的数据并输出
List<String> list =jedis.lrange("site-list", 0 ,2);
for(int i=0; i<list.size(); i++) {
System.out.println("列表项为: "+list.get(i));
}
}
列表项为: Taobao列表项为: Google列表项为: Runoob
lrang(“list”,0,10)区间的值
头 尾
| taobao | | Runoob |
redis.expire(key,expiration);设置过期时间
4. Jedis pool
单一Jedis实例不是线程安全的。为了避免这些问题,可以使用JedisPool, JedisPool是一个线程安全的网络连接池。
JedisPooljedisPool = null;
Jedisjedis = jedisPool.getResource();
Jedis的使用:
Jedisjedis = new Jedis("localhost");
jedis.set("foo","bar");
Stringvalue = jedis.get("foo");
5. 用过radiscluster 么?
http://hot66hot.iteye.com/blog/2050676
6. 如果系统上线了,而突发用户量增加,确定服务无法处理这么多用户,怎么办?
抛弃部分请求
二轮技术面
1. 解释springmvc ,
http://blog.youkuaiyun.com/jianyuerensheng/article/details/51258942
2. Java 线程池有那种
线程池的优点
1、线程是稀缺资源,使用线程池可以减少创建和销毁线程的次数,每个工作线程都可以重复使用。
2、可以根据系统的承受能力,调整线程池中工作线程的数量,防止因为消耗过多内存导致服务器崩溃。
Executors类里面提供了一些静态工厂,生成一些常用的线程池。
ExecutorService pool = Executors.newSingleThreadExecutor();
pool.execute(t1);
pool.shutdowm();
1. newSingleThreadExecutor
创建一个单线程的线程池。这个线程池只有一个线程在工作,也就是相当于单线程串行执行所有任务。如果这个唯一的线程因为异常结束,那么会有一个新的线程来替代它。此线程池保证所有任务的执行顺序按照任务的提交顺序执行。
2.newFixedThreadPool
创建固定大小的线程池。每次提交一个任务就创建一个线程,直到线程达到线程池的最大大小。线程池的大小一旦达到最大值就会保持不变,如果某个线程因为执行异常而结束,那么线程池会补充一个新线程。
3. newCachedThreadPool
创建一个可缓存的线程池。如果线程池的大小超过了处理任务所需要的线程,
那么就会回收部分空闲(60秒不执行任务)的线程,当任务数增加时,此线程池又可以智能的添加新线程来处理任务。此线程池不会对线程池大小做限制,线程池大小完全依赖于操作系统(或者说JVM)能够创建的最大线程大小。
4.newScheduledThreadPool
创建一个大小无限的线程池。此线程池支持定时以及周期性执行任务的需求。
ThreadPoolExecutor的完整构造方法的签名是:ThreadPoolExecutor(int corePoolSize, intmaximumPoolSize, long keepAliveTime, TimeUnit unit,BlockingQueue<Runnable> workQueue, ThreadFactory threadFactory,RejectedExecutionHandler handler) .
corePoolSize - 池中所保存的线程数,包括空闲线程。
maximumPoolSize-池中允许的最大线程数。
keepAliveTime - 当线程数大于核心时,此为终止前多余的空闲线程等待新任务的最长时间。
unit - keepAliveTime 参数的时间单位。
workQueue - 执行前用于保持任务的队列。此队列仅保持由 execute方法提交的 Runnable任务。
threadFactory - 执行程序创建新线程时使用的工厂。
handler - 由于超出线程范围和队列容量而使执行被阻塞时所使用的处理程序。
ThreadPoolExecutor是Executors类的底层实现。
ThreadPoolExecutor threadpool= new ThreadPoolExecutor(…)
http://www.cnblogs.com/sunhaoyu/articles/6955923.html
3. AOP体现在哪里 怎么用get…http://www.imooc.com/video/15682
Aop是一种编程范式,例如:面向对象编程也是一种范式,是OOP的一种补充。
三方面的分离减少耦合性:
水平分离:展示层 服务层 持久层
垂直分离:模块划分(订单,库存)
切面分离:分离功能性和非功能性功能:权限控制、事务处理、异常处理
Aop两种配置:XML配置、注解方式
代码书三点:
@Aspect
@PointCut 切入点 例如@Adiminonly注释切面表达式
@Before{checkAccess()} advise 5中
切面表达式:executiong 方法匹配,args参数 annotation匹配注释 within 匹配包和类型
例如:Execution(public * comm.mooc.service.*service.*(..))
Before 前置通知
After 后置通知,方法执行完后
AfterReturning 返回通知,成功执行后
AfterThrowing 异常通知,抛出异常后
Around环绕通知
4. Jvm配置的参数说几个
-Xms 初始堆大小2G
-xmx 最大堆大小 2G
-xmn 年轻代的大小256M
-xss 每个线程的堆栈大小 256K
三轮HR
漂亮和善的MM应该也是刚工作不久的MM,比较友好
1. 朋友眼中的自己怎么样
2. 有什么爱好
3. 对公司了解么
本文涵盖了一轮和二轮技术面试的内容,涉及项目介绍、Linux命令、Redis操作、Spring MVC解释、线程池使用、AOP应用及JVM配置等方面的知识。
661

被折叠的 条评论
为什么被折叠?



