设为首页 加入收藏

TOP

Exoweb面试经历(二)
2014-11-23 22:29:27 来源: 作者: 【 】 浏览:6
Tags:Exoweb 面试 经历
,呵呵,然后我再侃了点说,我认为编程序还是要结合实际,要准确的算出这些东西,必要的统计学和概率学要一点,然后,技术官看了看表,笑了笑说,今天的面试就到这了,有机会我们去测一下吧,然后在他们下面做了会,然后人事的过来了,叫我5天内等通知(等到现在还没等到,呵呵,估计没戏了)


这2次的面试的点感受:
1. 知己知彼,百战不殆,说的是我的初试,我初试准备的很充分,所以才能够进入复试,当然也是得益于吸取了前2位的经验教训以及和老师的交流。
2. 面试的时候不要紧张,保持清醒的头脑很重要,有时候人家就是考验你这方面的能力,本来你很有能力,被人家忽悠下就不行了,那样也是不行的,技术固然重要,灵活性也很重要
3. 算法、逻辑也很需要,这家公司考你的技术很少,考的基本都是逻辑,这些往往是学习一门编程语言时最容易被忽略的地方,在学蓝点java的时候,除了初级耿老师说了些编程的技巧(也就是些算法),到javaEE的时候,有些东西都是固定死的,很少有什么创新吧,java里算法不是很重要,有的算法都写好了,直接调用就OK了,而这家公司就是考你一个小小的东西是怎么实现的。或许应聘javaEE方面的不需要这些
4. 实事求是,有什么说什么,我刚开始我就和他们说,我觉得我javaEE学的不怎么样,MVC设计模式也没弄明白,但我一直想做一个SSH的项目。
5. 扬长避短,我也没有像章云鹤那样和他们大谈数据库、MVC,而是和他们谈了些算法实现,以及保证程序的100%正常运行等等自己感兴趣,有懂些的东西。这样自己才不会被面试官侃晕,人家之所以是面试官,肯定是有技术的,你谈自己不会的,无疑是“引狼入室”。


我的优化代码:
初试代码就不写了,很简单,写下复试代码以及他的一些思想。
首先写个快速排序的算法,因为1、2都要调用这个方法,在优化的时候可以写在自己优化的那个类里面
public class QuickSort()
{ public static void quickSort(int[] pData,int left,int right)
{
int i,j;
int middle,temp;
i = left;
j = right;
middle = pData[left];
while(true)
{
while((++i) while((--j)>left && pData[j]>middle);
if(i>=j)
break;
temp = pData[i];
pData[i] = pData[j];
pData[j] = temp;
}


pData[left] = pData[j];
pData[j] = middle;


if(left QuickSort(pData,left,j);
if(right>i)
QuickSort(pData,i,right);
}
}
1.这个算法主要是把改问题分解成2个经典算法——排序和查找
先新建一个数组,把原数组里的元素都赋值给新数组,然后新数组排序好,然后可以从0到n/2长度循环,如果第i个元素和第i+n/2个元素相等,则表示有一半元素相等,把该元素做成一个目标值,然后再在原数组中查找该元素的位置。返回下标.
public class Dominator {
static public int dominator (int []a)
{
int n=a.length;
int result=-1;
int target;
int temp;
int []b=new int[n];
for(int i=0;i {
b[i]=a[i];
}
QuickSort. quickSort(b,0,b.length);
target=b[0]-1;
for(int c=0;c { int max=c+n/2;
if(b[c]==b[max])
{
target=b[c];
}
}
if(target!=b[0]-1)
{
for(int k=0;k {
if(a[k]==target)
{
result=k;
}
}
}
return result;
}
public static void main(String args[])
{
int []a={3,3,7,3,3,3,7,1,5,3,6};
int b= Dominator.dominator (a);
System.out.println(b);
}
}
2.这个题的主要优化算法是假设返回值current和数组长度相等,先把负数变成正数(0-a[i]),然后排序,然后设置一个最小值-1,因为现在数组里的元素的值都>=0;然后for遍历数组,如果后面一个的值大于前面一个,则前面的值为-1,最后,重新遍历数组,如果有值是-1的数,则current自减,最后返回current。
public class AbsDistinct {
static public int absDistinct (int []a)
{
int n=a.length;
int current=n;
int temp;
for(int i=0;i {
if(a[i]<0)
{
a[i]=0-a[i];
}
}
QuickSort. quickSort(a,0,a.length);
for(int k=1;k {
if(a[k]==a[k-1])
a[k-1]=-1;
}
for(int sum=0;sum {
if(a[sum]==-1)
{
current--;
}
}
return current;
}
public static void main(String args[])
{
int []a={-3,-7,0,7,3,8,10};
int b= AbsDistinct. absDistinct (a);
System.out.println(b);
}
}
3这是一个很经典的“动态规划算法”,这个算法不但代码简洁,而且效率是最高的。
public class MaxSliceSum {
public static int maxSliceSum (int[] a)
{
int n=a.length;
int b=0;
int sum=a[0];
for(int i=0;i {
if(b>0) b+=a[i];
else b=a[i];
if(b>sum) sum=b;
}
return sum;
}
public static void main(String args[])
{
int []a={10,-5,-7,2,4,5};
int b= MaxSliceSum. maxSliceSum (a);
System.out.println(b);
}
}


首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇IBM R&D C++面试题 下一篇广州招聘JAVA工程师,待遇(8-15K)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: