技术总结

1 了解JavaScript编程、jQuery框架以及AJAX等前台技术。
2 熟悉SpringMVC、Spring、Mybatis开源框架。了解Struts2、Hibernate、Spring Boot框架。 
3 熟悉MySQL、SQL Server数据库,使用过Redis,了解数据库优化。
4 熟悉Linux操作系统环境及常见命令的使用,了解分布式系统架构。
5 了解C、C++语言,并能够使用进行基本编程。
6 了解常用数据结构及算法。
View Code

1,JavaScript,JQuery,AJAX都是做什么的?

HTML:展示数据
CSS: 使展示的数据更好看
JavaScript:是页面的数据具有动画效果
JQ:JavaScript框架

AJAX:异步的 JavaScript 和 XML

  1,Ajax是一种用于快速创建动态页面技术;通过后台与前台的少量交互,Ajax使页面实现异步更新,也就是不更新整个页面的情况下,实现更新某个部分,传统的不使用Ajax的页面,更新的话,只能进行重新加载整个页面。
  2,Ajax实现异步与同步,只需要修改async为false就行了,如下:

1 如果是jquery
2  $.ajax({
3 url: some.php,
4 async: false,
5 success : function(){
6 }
7 });
8 如果是原生的js
9      xmlHttp.open("POST",url,false);

2,框架用过哪些,具体某一个框架的工作流程,使用方法(主要配置)?

  

3,解释下SSM与SSH的区别?主要框架的区别?

  1,SSM与SSH的区别?

  SSH通常指的是Struts2做控制器(controller),Spring管理各层的组件,Hibernate负责持久化层。
  SSM则指的是SpringMVC控制器(controler),Spring管理各层的组件,MyBatis负责持久化层。
  共同点:
    1,Spring依赖注入DI来管理各层组件;
    2,使用面向切面编程AOP管理事物、日志、权限等;
  不同点:
    1,Struts 2和SpringMVC控制器控制视图模型的交互机制的不同;
    2,Struts 2是Action类级别,SpringMVC是方法级别,更容易实现RESTful风格。
    3,Hibernate 和 MyBatis 做持久化时的处理不同。

  2,struts2和springMVC之间的区别?   

    1.springMVC的入口是servlet即前端控制器,struts2的入口是filter过滤器;
    2.SpringMVC是基于方法开发的(一个url对应一个方法),请求参数传递到方法的形参,可以设计为单例或多例(一般为单例);Struts 2是基于类开发的,传递参数通过类的属性,只能设计为多例;
    3.Struts 2采用值栈存储请求和响应的数据,通过ognl存取数据,springMVC通过参数解析器是将request请求内容解析,并给方法形参赋值,将数据和视图封裝成ModelAndView对象,最后又将ModelAndView中的模型数据通过request域传输到页面.jsp视图解析器默认使用jstl.

  3,Hibernate和mybatis的区别?  

   1.Mybatis不完全是一个ORM框架,因为它需要程序员自己编写sql语句,而Hibernate完全是一个ORM框架;
   2.MyBatis学习门槛低,简单易学,而且Hibernate学习门槛高,不易精通;
   3.MyBatis直接编写原生态sql,可以严格控制sql执行的性能,进行更为细致的sql优化,灵活度高,非常适合对关系型数据模型要求不高的软件开发,而Hibernate不需要编写sql语句,灵活性不高,对于关系模型要求高的软件,用它开发可以节省很多代码,提高开发效率。
      4.Mybatis本身提供的缓存机制不佳,而Hibernate有更好的一级缓存与二级缓存机制,可以使用第三方缓存,如Ecach。

4,Spring Boot是怎么样的框架?掌握程度如何?

 

5,数据库优化你是怎么做的?

  1,数据库语句优化:    

    1.查询时,能不用*就不用,尽量写全字段名;
    2.连接时注意:小表 join 大表的原则;
    3.索引不是越多越好,每个表控制在6个索引以内。范围where条件的情况下,索引不起作用,比如 where value <100;
    4.多用explain和profile分析查询语句;
    5.有时候可以1条大的sql分成几个小sql顺序执行,速度会快很多;
    6.每隔一段时间用 alter table table_name engine = innodb,优化表。
    7.查看慢查询的日志,找出执行时间长的sql试着优化;
    8.大部分情况连接效率大于子查询,但是有例外。当你对连接的效率都感到不能接受的时候,可以试试用子查询,虽然大部分情况下你会更失望,但是总有惊喜的时候;

  2,数据库优化:

6,Redis在哪里用到过,解决什么样的问题?

  在目中查询功能是非常频繁的,如果每次查询都调用数据库的话,会给数据库造成很大的压力,因此需要在用户和数据库之间加一层缓存,对于同样的查询,只查询一遍数据库,然后把数据保存到缓存当中,当其他用户再访问同样的页面时便可以直接从缓存中去读取数据,这样查询效率将会提升非常多,同时也会大大减轻数据库的压力
  一般采用的是集群:
  Redis是在内存中保存数据的,而我们的电脑一般内存都不大,这也就意味着Redis不适合存储大数据,适合存储大数据的是Hadoop生态系统的Hbase或者是MogoDB。Redis更适合处理高并发,一台设备的存储能力是很有限的,但是多台设备协同合作,就可以让内存增大很多倍,这就需要用到集群。
注意:Redis集群中至少应该有三个节点。要保证集群的高可用,需要每个节点有一个备份机。Redis集群至少需要6台服务器。

7,了解哪些数据库系统?数据库的分类?

  关系型数据库:

  Oracle(商业,收费,甲骨文)【性能高】

  SQL Server(中型,.net常用,微软)

  Mysql(小型,轻量,开源,免费,Sun)<MariaDB是MySQL数据库的一个分支>

  Access(小型,与Office集成方便用于窗体和报表,个人,微软)

  非关系型数据库(NoSQL):

  Redis(Key-Value键值型数据库,结构类似哈希表)

  HBase(列式存储,三维有序存储)

8,Linux常用命令,所了解的Linux系统有哪些?或者用过哪些?

  Ubuntu

  Redhat 红帽

  Centos

9,分布式架构是怎么样考虑的?

分布式结构就是将一个完整的系统,按照业务功能,拆分成一个个独立的子系统,在分布式结构中,每个子系统就被称为“服务”。这些子系统能够独立运行在web容器中,它们之间通过RPC方式通信。

  就商城项目而言。按照微服务的思想,我们需要按照功能模块拆分成多个独立的服务,如:用户服务、产品服务、订单服务、后台管理服务、数据分析服务等等。这一个个服务都是一个个独立的项目,可以独立运行。如果服务之间有依赖关系,可以通过RPC方式相互调用。

这样的好处有很多:

 系统之间的耦合度大大降低,可以独立开发、独立部署、独立测试,系统与系统之间的边界非常明确,排错也变得相当容易,开发效率大大提升。

  1. 系统之间的耦合度降低,从而系统更易于扩展。我们可以针对性地扩展某些服务。假设这个商城要搞一次大促,下单量可能会大大提升,因此我们可以针对性地提升订单系统、产品系统的节点数量,而对于后台管理系统、数据分析系统而言,节点数量维持原有水平即可。
  2. 服务的复用性更高。比如,当我们将用户系统作为单独的服务后,该公司所有的产品都可以使用该系统作为用户系统,无需重复开发。

10,使用过服务器吗?具体是做什么的?什么样的配置?什么系统?

使用过,第一次接触还不是真正意义上的服务器,自己在虚拟机上架设了hostoj,使用花生壳和Nginx进行反向代理与域名解析,把自己的电脑映射出去,供大家访问。后期迁移到学校的Windows Server服务器上,访问地址:http://www.betterang.club/。之后做项目的时候,使用服务器进行项目发布,在服务器上安装假设:Zookeeper ,Dubbo,nginx,FastDFS,Redis,Solr/SolrCloud,ActiveMQ等

11,C/C++与Java的区别?还了解其他语言吗?用语言做过哪些?

1.内存分配

java中对内存的分配是动态的,JVM自动对内存进行扫描,对长期不用的空间作为”垃圾”进行收集,使得系统资源得到更充分地利用.按照这种机制,程序员不必关注内存管理问题,这使Java程序的编写变得简单明了,并且避免了了由于内存管理方面的差错而导致系统出问题.而C语言通过malloc()和free()这两个库函数来分别实现分配内在和释放内存空间的,C++语言中则通过运算符new和delete来分配和释放内存.

2.数据类型的长度

Java对每种数据类型都分配固定长度.Java对每种数据类型都分配固定长度.比如,在Java中,int类型总是32位的,而在C和C++中,对于不同的平台,同一个数据类型分配不同的字节数,同样是int类型,在PC机中为二字节即16位,而在VAX-11中,则为32位.这使得C语言造成不可移植性,而Java则具有跨平台性(平台无关性).

3.指针

编程者无法找到指针来直接访问内存,并且增添了自动的内存管理功能,从而有效地防止了c/c++语言中指针操作失误,如野指针所造成的系统崩溃。但也不是说JAVA没有指针,虚拟机内部还是使用了指针,只是外人不得使用而已。这有利于Java程序的安全。

4.继承  

c++支持多重继承,这是c++的一个特征,它允许多父类派生一个类。尽管多重继承功能很强,但使用复杂,而且会引起许多麻烦,编译程序实现它也很不容易。Java不支持多重继承,但允许一个类继承多个接口(extends+implement),实现了c++多重继承的功能,又避免了c++中的多重继承实现方式带来的诸多不便。

5.数据类型及类 

Java是完全面向对象的语言,所有函数和变量都必须是类的一部分。除了基本数据类型之外,其余的都作为类对象,包括数组。对象将数据和方法结合起来,把它们封装在类中,这样每个对象都可实现自己的特点和行为。而c++允许将函数和变量定义为全局的。

6.操作符重载 

Java不支持操作符重载。操作符重载被认为是c++的突出特征,在Java中虽然类大体上可以实现这样的功能,但操作符重载的方便性仍然丢失了不少。Java语言不支持操作符重载是为了保持Java语言尽可能简单。

7.预处理功能 

Java不支持预处理功能。c/c++在编译过程中都有一个预编泽阶段,即众所周知的预处理器。预处理器为开发人员提供了方便,但增加了编译的复杂性。JAVA虚拟机没有预处理器,但它提供的引入语句(import)与c++预处理器的功能类似。 

8.goto语句 

“可怕”的goto语句是c和c++的“遗物”,它是该语言技术上的合法部分,引用goto语句引起了程序结构的混乱,不易理解,goto语句子要用于无 条件转移子程序和多结构分支技术。鉴于以广理由,Java不提供goto语句,它虽然指定goto作为关键字,但不支持它的使用,使程序简洁易读。 

9.异常

java中有异常机制用于捕获异常,为c++中没有

12,常用的数据结构?

 

posted @ 2018-04-19 18:52  H+  阅读(324)  评论(0编辑  收藏  举报