2017-11-7java(3-4年)面试中遇到的面试题

来源:互联网 发布:阿里云 和 aws 对比 编辑:程序博客网 时间:2024/06/06 02:28

今天去了一家公司,名字叫图谱天下

废话少说:

1.自定义表字段如何实现

    第一次听到这个问题觉得比较简单,我说直接将所有的表和所有的列存储到数据库表结构里,用表来管理用户创建的表和字段。

    我这样回答之后,对面并不是很满意,说:如果字段多了怎么办?并且我这种做法每次查询都要先查询到需要的表,在查询到需要的列,才能执行最终的查询。这样做不好。     我就没啥办法了,以前觉得这种方式还不错。那怎么办呢?

网上有几种方法:
1. 动态添加属性字段。
2. 先预留字段,到时再用。
3. 使用 XML 字段保存。
4. JSON 格式保存。
5. 属性字段行存储
【推荐方式】

    这个博客写的不错:http://blog.csdn.net/kk185800961/article/details/53208667

2.类似于dobbo这种服务框架,如何实现多节点session共享

    类似于这种问题楼主确实没有真正解决过,我先回答使用filter来实现,他又问我有没有其他的想法,我就说可以使用mq消息推送到不同的节点,给session单独在设置一个ID用作唯一标示【显然不是这样的】

    网上出的答案:

        1.使用数据库来同步session[感觉这中方法不是很好,该不赘述]

        2.使用cookie来同步session

session是文件的形势存放在服务器端的,cookie是文件的形势存在客户端的,怎么实现同步呢?

方法很简单,就是把用户访问页面产生的session放到cookie里面,就是以cookie为中转站。

你访问web服务器A,产生了session把它放到cookie里面了,你访问被分配到web服务器B.

这个时候,web服务器B先判断服务器有没有这个session

如果没有,在去看看客户端的cookie里面有没有这个session

如果也没有,说明session真的不存,如果cookie里面有,就把cookie里面的sessoin同步到web服务器B,这样就可以实现session的同步了。 

说明:这种方法实现起来简单,方便,也不会加大数据库的负担,但是如果客户端把cookie禁掉了的话,那么session就无从同步了,这样会给网站带来损失;

cookie的安全性不高,虽然它已经加了密,但是还是可以伪造的。 

        3.使用memcache同步session【荐】

memcache可以把web中多节点的服务器的内存结合起来,形成内存池,这样的话无论是哪个服务器产生的session,其他服务器都可以使用。

缺点:memcache将内存分为不同的存储块,并且大小不同且固定,如果存储不足就会产生内存泄露

3.多节点事务【分布式事务】如果实现事务的一致性

    这个问题没有回答出来。。。

    这个事务有两种特点:1.最终一致性    2.过程一致性

    最终一致性很好理解,就是最终的事务保持一致即可。(使用mq来推送事务消息就行)

    过程一致性:在执行一些列业务中部分事务保持一致(这个暂时还没有遇到也没有很好的想法。。求分享)

4.js遍历html节点是如何遍历的

    我先说的是从上到下的顺序,接着他说按照ID获取节点的原理是什么,我说:从html的文档开头开始查找,找到就返回,不会继续向下查找。然后他给我写了一个例子问我按照id=one获取到的是哪个节点

<div>     <div id="one"></div></div><div id="one"><div>

5.sql语句方面的优化有哪些:

我先说了些简单的:

1.尽量不使用*

2.为列创建合适的索引

3.使用存储过程或者视图来存储比较复杂的sql

4.sql使用占位符,防止sql注入(他说阿里巴巴的一个数据库中间件可以解决这个问题,好像是这个Cobar

面试官觉得这些太简单了,问我有没有其他的优化了。。。然而  

  他的提示:

如果一个表中有个age,查询的时候写>age 好还是>=age好(当时蒙圈),因为>=比>少了一次遍历【god】

网上:

http://www.jb51.net/article/39221.htm这里mysql给出了好多优化方案

回答:获取到one节点。问我为什么不是先获取外层的div,我说html是递归遍历的【没有说错吧,感觉是】

     主要的面试题大概是这几个,然后就没有然后了,楼主明天继续分享。年底工作不好找,共同分享学习一下

阅读全文
0 0
原创粉丝点击