技术面总结

来源:互联网 发布:大型网络3d手游 编辑:程序博客网 时间:2024/06/09 23:11

换了新公司,我是觉得其实笔试其实不能检查到你什么,一间公司我可以写满,另外一间公司我可能只写到一半的题目,而且我面试的是差不多的职位,所以我觉得技术面才是突出自己能到哪个层次的环节,所以总结一下自己遇到的面试官面的技术问题。答案方面有些事自己总结有些事转载,如果侵权,请告知我进行修改。

ZooKeeper用途

数据发布与订阅(配置中心)
负载均衡
命名服务(Naming Service) dubbo在这里用
命名服务也是分布式系统中比较常见的一类场景。在分布式系统中,通过使用命名服务,客户端应用能够根据指定名字来获取资源或服务的地址,提供者等信息。被命名的实体通常可以是集群中的机器,提供的服务地址,远程对象等等——这些我们都可以统称他们为名字(Name)。其中较为常见的就是一些分布式服务框架中的服务地址列表。通过调用ZK提供的创建节点的API,能够很容易创建一个全局唯一的path,这个path就可以作为一个名称。
阿里巴巴集团开源的分布式服务框架Dubbo中使用ZooKeeper来作为其命名服务,维护全局的服务地址列表,点击这里查看Dubbo开源项目。在Dubbo实现中:
服务提供者在启动的时候,向ZK上的指定节点/dubbo/serviceName/providersURL/dubbo/{serviceName}/providers目录下的提供者URL地址, 并向/dubbo/serviceName/consumersURLZKDubbo/dubbo/{serviceName}目录下所有提供者和消费者的信息。
分布式通知/协调
集群管理与Master选举
分布式锁
分布式队列

SpringMVC下REST风格

/blog/1 HTTP GET =>  得到id = 1的blog/blog/1 HTTP DELETE => 删除 id = 1的blog/blog/1 HTTP PUT =>  更新id = 1的blog/blog   HTTP POST =>  新增BLOG@RequestMapping(value="/blog/{id}",method=RequestMethod.DELETE)public ModelAndView delete(@PathVariable Long id,HttpServletRequest request,HttpServletResponse response) {  blogManager.removeById(id);  return new ModelAndView(LIST_ACTION);}

Controller 注入注解

Spring注解@Resource和@Autowire的区别
@Autowire默认按照类型装配,默认情况下它要求依赖对象必须存在如果允许为null,可以设置它required属性为false,如果我们想使用按照名称装配,可以结合@Qualifier注解一起使用;
@Resource默认按照名称装配,当找不到与名称匹配的bean才会按照类型装配,可以通过name属性指定,如果没有指定name属性,当注解标注在字段上,即默认取字段的名称作为bean名称寻找依赖对象,当注解标注在属性的setter方法上,即默认取属性名作为bean名称寻找依赖对象.
注意:如果没有指定name属性,并且按照默认的名称仍然找不到依赖的对象时候,会回退到按照类型装配,但一旦指定了name属性,就只能按照名称装配了.

@Value没有值得情况下 设置默认值

注解在Spring3.0才出现@Value("${timer.userAge:22}")  private int userAge;  

AOP通知五类

前置通知[Before advice]:在连接点前面执行,前置通知不会影响连接点的执行,除非此处抛出异常。
正常返回通知[After returning advice]:在连接点正常执行完成后执行,如果连接点抛出异常,则不会执行。
异常返回通知[After throwing advice]:在连接点抛出异常后执行。
返回通知[After (finally) advice]:在连接点执行完成后执行,不管是正常执行完成,还是抛出异常,都会执行返回通知中的内容。
环绕通知[Around advice]:环绕通知围绕在连接点前后,比如一个方法调用的前后。这是最强大的通知类型,能在方法调用前后自定义一些操作。环绕通知还需要负责决定是继续处理join point(调用ProceedingJoinPoint的proceed方法)还是中断执行。

<aop:before method="before" pointcut-ref="pointcut"/><aop:after method="after" pointcut-ref="pointcut"/><aop:after-returning method="afterReturning" pointcut-ref="pointcut"/><aop:after-throwing method="afterThrowing" pointcut-ref="pointcut"/><aop:around method="around" pointcut-ref="pointcut"/>

如何使一个interface在被implment的时候只显示实现类的想要的那些方法

这里写图片描述

如何删除一个list某个元素,但是不报错

Iterator<String> it = list.iterator();while(it.hasNext()){String x = it.next();if(x.equals("del")){it.remove();}}这种方式可以正常的循环及删除。但要注意的是,使用iterator的remove方法,如果用list的remove方法同样会报上面提到的ConcurrentModificationException错误。

线程安全的Map

ConcurrentMap,HashTable

匿名方法如何传参

var b=5; var a = (function(){ var i = 1; return b+i; })(b)
原创粉丝点击