话说昨晚九点,博主兴高采烈的准备去超市购物,一不小心手机来了通电话,根据提示是阿里巴巴,晕菜,肯定是跟20天前提交的内推职位有关。怕不接就再没机会了,于是豁出去了,接!

果然,一个很有磁性的面试官开始说了几句话,然后就让做自我介绍了,我连自我介绍都紧张的不行,大脑空白啊!这是智商不够的体现啊!我就说想寻求java研发工程师的工作。。。。。。

然后下面是一些面试中出现的**状况。

题目一: 首先就是SSH框架中的Spring,主要是IoC,让我讲一下是怎么个原理。我已经想不起来了,小伙伴们好好复习一下,再做几个例子感受感受可能就说上来了。

Spring工作原理 
        Spring内部最核心的就是IOC了, 动态注入,让一个对象的创建不用new了,可以自动的生产,这其实就是利用java里的反射 反射其实就是在运行时动态的去创建、调用对象,Spring就是在运行时,跟xml  Spring的配置 文件来动态的创建对象,和调用对象里的方法的 。 
     Spring还有一个核心就是AOP这个就是面向切面编程,可以为某一类对象 进行监督和控制(也就是在调用这类对象的具体方法的前后去调用你指定的模块)从而达到对一个模块扩充的功能。这些都是通过 配置类达到的。 
   Spring目的:就是让对象与对象(模块与模块)之间的关系没有通过代码来关联,都是通过配置类说明 
管理的(Spring根据这些配置 内部通过反射去动态的组装对象) 
 要记住:Spring是一个容器,凡是在容器里的对象才会有Spring所提供的这些服务和功能。 Spring里用的最经典的一个设计模式就是:模板方法模。

一、IoC(Inversion of control): 控制反转

1、IoC: 
概念:控制权由对象本身转向容器;由容器根据配置文件去创建实例并创建各个实例之间的依赖关系 
核心:bean工厂;在Spring中,bean工厂创建的各个实例称作bean 
二、AOP(Aspect-Oriented Programming): 面向方面编程 
1、 代理的两种方式: 
静态代理:   针对每个具体类分别编写代理类;   针对一个接口编写一个代理类; 
动态代理: 针对一个方面编写一个InvocationHandler,然后借用JDK反射包中的Proxy类为各种接口动态生成相应的代理类 。
2、 AOP的主要原理:动态代理 
题目二:数据结构中二叉树中如何删除一个节点?

二叉树删除节点分多种情况讨论:

  1. 被删除节点没有子树的情况,直接删除,并修改对应父节点的指针为空。

  2. 对于只有一个子树的情况,考虑将其子树作为其父节点的子树,关于是左还是右,根据被删除的节点确定。

  3. 最复杂的是有两个子树的情况,可以考虑两种方法,都是同样的思想:用被删除节点A的左子树的最右节点或者A的右子树的最左节点作为替代A的节点,并修改相应的最左或最右节点的父节点的指针,修改方法类似2 。

/**********删除二叉树节点的操作***********/
btree deletenode(btree root,int node)
{btree parent;btree point;btree child;int postion;parent=binary_search(root,node,&postion); //二叉树为空的情况if(parent==NULL)return root;else{switch(postion){ case -1:point=parent->left;break;case 1 :point=parent->right;break;case  0 :point=parent;break;}if(point->left==NULL&&point->right==NULL){switch(postion){case -1:parent->left=NULL;break;case 1:parent->right=NULL;break;case 0:parent=NULL;break;}free(point);return root;}if(point->left==NULL&&point->right!=NULL){if(postion==-1)parent->left=point->right;elseif(postion==1)parent->right=point->right;elseroot=root->right;free(point);return root;}if(point->left!=NULL&&point->right==NULL){if(postion==-1)parent->left=point->left;elseif(postion==1)parent->right=point->left;elseroot=root->left;return root;}if(point->left!=NULL&& point->right!=NULL){parent=point;child=point->left;while(child->right!=NULL){parent=child;child=child->right;}point->data=child->data;if(parent->left=child)parent->left=child->left;elseparent->right=child->left;free(child);return root;}}
}

或者

Tree *Delete(Tree *T,int n)
{//将树中指定节点删除的函数Tree *tmp;if(T==NULL)return NULL;if(T->element==n){if(T->right==NULL)                       //如果没有右子树,即只有一个该节点儿子左子树{                                        //则直接删除tmp=T;T=T->left;                            //用左子树节点代替父节点free(tmp);}else                                     //如果右子树存在{tmp=T->right;while(tmp->left!=NULL)tmp=tmp->left;                   //找到右子树的值最小的节点T->element=tmp->element;             //用该节点的值代替原来的节点的值T->right=Delete(T->right,tmp->element);                         //递归的删除右子树中用来代替源节点值的节点T->height = MAX(Height(T->left),Height(T->right)) + 1;}return T;}if(n < T->element)T->left = Delete(T->left,n);elseT->right = Delete(T->right,n);T->height = MAX(Height(T->left),Height(T->right)) + 1;return T;
}

下面以实例来解释,假设要删除下图的节点2,

如图,要删除节点2,先看节点2有没有右子树;有右子树,找到其右子树中值最小的节点,于是找到了3;把3的值赋给节点2,现在变成第2附图;下面要递归的删除其右子树中的3节点。

5比3大,所以left递归找到3;3有右子树4,所以要找到3的右子树的值最小的节点。4是其唯一的值,肯定是其最小的节点。于是把4赋给3,变成第3幅图;下面要删除4的右子树中给其赋值的节点4.第一个就是4,好巧,看看其有没有右子树,没有,光杆司令一个;直接删除该节点,把NULL赋给4;于是变成第4幅图。

题目三:链表中如何倒序:由a->b->c->d,变为d->c->b->a,并且不占用内存空间。

我给出的是这种思想,定义两个数组,引入一个变量,但是好像占用了很多空间,面试官并不是很happy。。。

#include <stdio.h>
void main()
{
int n,i,j,t;
int a[1000];
scanf("%d",&n); //输入输入正整数的个数
for(i=0;i<n;i++)
scanf("%d",&a[i]); //输入n个正整数
for(i=0,j=n-1;i<j;i++,j--)
{
t=a[i];
a[i]=a[j];
a[j]=t;
} //进行倒序排列
for(i=0;i<n;i++)
printf("%d\t",a[i]); //输出排列后的数列
}

再从网上搜索点类似的,,,

//逆序
void reverseNodeList()
{
if(NULL == head)
{
return;
}
//如果链表长度为1
if(head->pNext == NULL)
{
return;
}
Node* p = head->pNext;
Node* q = p->pNext;
Node* t = NULL;
while(NULL != q)
{
t = q->pNext;
q->pNext = p;
p = q;
q = t;
}
head->pNext->pNext = NULL;
head->pNext = p;
}

还有就是询问了一下自己的英文水平,由于读写还行,听说不好,所以就只能实话实说了,我怕自己说大话,面试官直接跟我讲英文。。。

阿里2017校园招聘电话面试总结相关推荐

  1. 阿里2015校园招聘广州站 面试经历

    2014年9月16号参加阿里在广州举行的校园招聘,最后止步于一面! 早上从深圳出发,由于没有参加过什么招聘,没有经验,我居然穿了短牛仔去"天泰旅行社"买票,后来看到一同前往的参加招 ...

  2. 广州图普网络科技2017校园招聘简章

    一.关于图普 图普科技是一家站在人工智能前沿的创新科技公司,专注于图像识别整体解决方案,为企业提供图像内容审核.图像内容分析.以图搜图等技术服务.凭借深厚的技术实力与专业的服务,图普科技与迅雷.秒拍. ...

  3. 【算法】创新工场涂鸦移动2017校园招聘测试题-A卷-软件工程师

    今天做了创新工场涂鸦移动2017校园招聘测试题-A卷-软件工程师的题目,我也不知道这算不算是泄题,再说也不见得我写的算法就是对的.贴出来,希望大家相互学习,相互进步,如有违反XX,不胜荣幸. 链表 1 ...

  4. 阿里内推实习生电话面试

    前言 某天接到了阿里内推实习生电话面试,遂将部分题目整理如下. 部分问题 1.malloc与new的区别 特征 new/delete malloc/free 分配内存的位置 自由存储区 堆 内存分配失 ...

  5. 阿里校园招聘前端面试

    2014年9月24日,怀着激动(必须是激动啊,第一次面试)的心情来到了杭州阿里安排的面试地点,进去签完到后就进入了休息室进行焦急的等待.等待了大概20分钟,就轮到我的面试了.进入了面试大厅,在工作人员 ...

  6. 2011深信服校园招聘笔试面试

    http://blog.sina.com.cn/s/blog_48c9576b0100me1y.html 9月26号深信服校园招聘笔试 都说深信服的题又偏又难,果然不假.不过还有有很多值得多思考的题. ...

  7. 2015华为南研所校园招聘笔试面试经历

    中兴一面刚面完,二面估计要等五天左右才通知,今天闲的无聊总结一下之前华为的笔试面试经历. 本人小硕一枚,成绩略渣,华为投的是软件测试岗. 今天四月份的时候参加了华为实习生招聘,感觉自己特别幸运,机试考 ...

  8. 网易校园招聘java面试经历

    之前投过阿里,无奈缺乏实战经验,算法能力也不够出众,面试的时候没什么可说的被刷.这次被通知过了电话面试,所以就去了现场面. 这是我第一次过了所有轮的技术面最后面了HR面的经历,所以对我挺有意义的,所以 ...

  9. 各大IT公司2012校园招聘笔试面试整理

            从2011年7月底从学校出来到北京找实习和工作,到现在差不多半年了.期间参加了大大小小许多家公司的校园招聘,由于自己的实力问题没能拿到一个Offer,好在运气不错,最后拿到了所在实习公 ...

最新文章

  1. Java嵌套类的使用
  2. java 省市区数据data
  3. MySQL实战课程---通过录像手把手带您学会当前互联网流行架构
  4. SAP-PM 的工具管理篇
  5. 常见的几种最优化方法
  6. Hyperledger Fabric 1.0 实战开发系列 第二课 Fabric环境搭建
  7. python 递归 写平方_Python算法:推导、递归和规约
  8. python爬虫-Python 爬虫介绍
  9. Aiseesoft Data Recovery for mac(专业数据恢复软件)
  10. tween.js 中文使用指南
  11. XML (4) XSL教程
  12. html图片加载慢的问题
  13. 人口各省预测模型matlab_MATLAB实验9河南省人口预测模型马尔萨斯人口模型.doc
  14. 《码出高效 Java开发手册》书籍源码及相关代码示例
  15. Deep Glow for mac(AE高级辉光特效插件)
  16. ESP32使用百度语音合成 实现文字转语音播放
  17. 一、Scrapy爬虫概述
  18. SpringBoot实战笔记:记一次接口406错误的解决
  19. Mac连接Ubuntu服务器并用屏幕共享app显示远程应用图形界面
  20. 009-Dockerfile-MAINTAINER(deprecate)-使用 LABEL 代替

热门文章

  1. 使用JavaFX控件
  2. java 羽化_JAVA10来了 - 羽化布凉的个人空间 - OSCHINA - 中文开源技术交流社区
  3. 早该把B站打回原形了
  4. 树莓派挂载windows共享文件夹
  5. c语言计算年龄的编程,C语言编程实现---计算实际年龄
  6. 计算机桌面图片唐诗,唐诗高清壁纸
  7. 西汉 东汉 三国(曹魏 蜀汉 东吴)
  8. CodeForces 868A Bark to Unlock
  9. 第二章 第二课 Scratch作品:一闪一闪亮晶晶(自己画角色)
  10. Netflix Movies and TV Shows(Netflix影视剧数据集)