精华内容
下载资源
问答
  • 多益笔试

    2018-03-11 18:00:07
    说出 ArrayList,Vector, LinkedList 的存储性能和特性?ArrayList 和 Vector 都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组...

     说出 ArrayList,Vector, LinkedList 的存储性能和特性?

    ArrayList 和 Vector 都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增
    加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存
    操作,所以索引数据快而插入数据慢,Vector 由于使用了 synchronized 方法(线程安全),
    通常性能上较 ArrayList 差,而 LinkedList 使用双向链表实现存储,按序号索引数据需要进
    行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。
    LinkedList 也是线程不安全的,LinkedList 提供了一些方法,使得 LinkedList 可以被当作堆 可以被当作堆

    栈和队列来使用。

    英文翻译是个函数有关的文字

    网络编程三大要素。

    (1)IP地址:网络中每一台计算机的唯一标识,通过IP地址找到指定的计算机。

    (2)端口:用于标识进程的逻辑地址,通过端口找到指定进程。

    (3)协议:定义通信规则,符合协议则可以通信,不符合不能通信。

    数据库设计

    编程题

    1.一个递归算法

    2.问题描述 九宫格。输入1-9这9个数字的一种任意排序,构成3*3二维数组。如果每行、每列以及对角线之和都相等,打印1。否则打印0。

    样例输出 与上面的样例输入对应的输出。 例: 数据规模和约定   输入1-9这9个数字的一种任意排序。

    import java.util.Scanner;

    public class Main {

    public boolean isRight(int[] A) {

    int sum = A[0] + A[1] + A[2]; //判断行

    for(int i = 3;i <= 6;i = i + 3) {

    if(sum != A[i] + A[i + 1] + A[i + 2])

    return false; } //判断列

    for(int i = 0;i <= 2;i++) {

    if(sum != A[i] + A[i + 3] + A[i + 6])

    return false; } //判断对角线

    if(sum != A[0] + A[4] + A[8])

    return false;

    if(sum != A[2] + A[4] +A[6])

    return false;

    return true; }

    public static void main(String[] args) {

    Main test = new Main();

    Scanner in = new Scanner(System.in);

    int[] A = new int[9];

    for(int i = 0;i < 9;i++)

    A[i] = in.nextInt();

    if(test.isRight(A)) {

    System.out.print("1");

    } else {

    System.out.print("0");

    }

    }}


    展开全文
  • 2019多益笔试编程和面试的算法题

    千次阅读 2019-01-13 00:44:06
    2019多益笔试编程和面试的算法题益网络笔试编程题:字符串的指定位数组合原题概述(只记得大概):题目解答益网络面试算法题:不用比较找出两数中的较大值和较小值原题概述:题目解答代码示例: 益的笔试题中...

    多益的笔试题中只有一道编程题,难度中等,是《剑指offer》中的题目的变形,只要稍微认真读一下题目和看过题目的原型的话,做出来应该不会太难.

    不过它给的时间有点少,我记得我当时做到编程的时候大概还有20分钟左右剩下,然后看了一下题目,一下子想不出来,就回去做了前面的题目,再回来做,就忽然记起来的,但是没有剩下多少时间了,只能写个解题思路就交了。当时没想到能过笔试,毕竟编程题都没有做出来。然后迷迷糊糊就进了面试。

    面试前查了一下多益网络的面试流程之类的,发现只会有一次面试(当时看到时真不敢相信),而且是视频面试,当晚就有点紧张和兴奋了,毕竟这是第三次做笔试,才进面试了。面试面经就不说了,网上很多,而且自己应该没有过(面试中算法题答不上)

    接下来进入正题吧,就想记录一下多益网络的笔试编程题和面试时遇到算法题,觉得出得挺好的。

    多益网络笔试编程题:字符串的指定位数组合

    原题概述(只记得大概):

    找出数字字符串中指定位数的最小值。组合在原来字符串中的前后顺序不能变。

    例如:有字符串"1230451",要求找出两位最小的顺序组合,则结果是1(是01的组合).

    有字符串"123451",要求找出两位最小的顺序组合,则结果是11.

    题目解答

    原型应该是《剑指offer》中的面试题28:字符串的排序中的拓展:

    如果输入n个字符,则这n个字符能构成长度为1的组合、长度为2的组合、。。、长度为n的组合。求n个字符的所有的组合(所有长度)。答案


    多益的这道题本质上跟《剑指offer》中的没有太大区别,只是加了一下字符串转整数之类的过程。

    核心解题思路还是字符串的m位组合数,就是将字符串组合分为两部分:

    第一个字符和其余的所有字符。如果组合里包含第一个字符,则下一步在所剩余的n-1个字符里选取m个字符。如果组合里不包含第一个字符,则下一步在剩余的n-1个字符里选取m个字符。也就是说,我们可以把n个字符组成长度为m的组合问题分解为两个子问题,分别求n-1个字符串中长度为m-1的组合,以及求n-1个字符的长度为m的组合。这两个子问题都可以用递归的方式解决。

    具体见下方代码:

    多益网络面试算法题:不用比较找出两数中的较大值和较小值

    原题概述:

    不用比较,找出两数中的较大值和较小值。(后来面试官有提示使用加减乘除,但是我还是想不出来,因为之前没有做过这道题,虽然这道题看起来很熟悉,有时候真的需要多做算法题,没看过的题目,硬想是很难在短时间内想到)

    题目解答

    面试完之后,我百度了一下解答,原来是要自己定义sign函数(即利用>>>31位获取得到某个数是正数还是负数),然后可以利用sign(a-b)就可以知道,如果a大于b,则运算结果是1。如果是b大,则运算结果是0。然后还可以利用异否^1,定义flip函数,得到1的否定0,0的否定1。

    这样就可以通过上面的结果乘以两数本身然后相加,如果一个的系数为0,则另一个数的为1,和则系数为1的那个数。这样可以决定返回大小值了。

    其中尤其值得注意的是,还需要考虑a-b的值可能会溢出,这时候就不单单至以上说得那么简单了,还需要考虑a和b的两个数之间的正负值

    参考:https://blog.csdn.net/jeanphorn/article/details/42264537
    https://blog.csdn.net/u010456903/article/details/48953429

    具体见下方代码:

    代码示例:

    import java.util.Stack;
    
    /**
     * 多益的编程题和面试时的编程题
     *
     * @author zhangcanlong
     * @date 2019年1月12日
     */
    public class DuoyiTest {
    
    	public static void main(String[] args) {
    		DuoyiTest test = new DuoyiTest();
    		// 测试1
    		System.out.println("测试1都是正数");
    		test.findTwoNumMinAndMax(1, 100);
    		// 测试2
    		System.out.println("测试2,a负,b正");
    		test.findTwoNumMinAndMax(-13, 100);
    		// 测试3
    		System.out.println("测试3");
    		test.findTwoNumMinAndMax(-13, -48);
    		// 测试4(溢出情况)
    		System.out.println("测试4(溢出情况)");
    		test.findTwoNumMinAndMax(-2147483647, 2000000);
    
    		// 找出数字字符串中指定位数的最小值测试1
    		System.out.println("找出数字字符串中指定位数的最小值测试1:" + test.findMinNum("123450231", 2));
    		// 找出数字字符串中指定位数的最小值测试2
    		System.out.println("找出数字字符串中指定位数的最小值测试2:" + test.findMinNum("234523", 2));
    		// 找出数字字符串中指定位数的最小值测试3
    		System.out.println("找出数字字符串中指定位数的最小值测试3:" + test.findMinNum("12345231", 5));
    		// 找出数字字符串中指定位数的最小值测试4
    		System.out.println("找出数字字符串中指定位数的最小值测试4:" + test.findMinNum("12345231", 6));
    
    	}
    
    	/**
    	 * 找出数字字符串中指定位数的最小值,例如:有字符串"1230451",要求找出两位最小的顺序组合,则结果是01,即1.
    	 * <p>
    	 * 解题思路:将其转化为从长度为n的数字数组中找出m位组合即可
    	 *
    	 * @param str
    	 *            要寻找的字符串
    	 * @param m
    	 *            指定的位数
    	 */
    	public Integer findMinNum(String str, int m) {
    		if (str == null || str.length() <= 1 || m >= str.length()) {
    			if (str == null) {
    				throw new RuntimeException("字符串不能为空");
    			}
    			return Integer.parseInt(str);
    		}
    		int[] ints = new int[str.length()];
    		for (int i = 0; i < str.length(); i++) {
    			ints[i] = Integer.parseInt(String.valueOf(str.charAt(i)));
    		}
    		Stack<Integer> stack = new Stack<>();
    		Integer[] mins = new Integer[1];
    		combinateNum(ints, 0, m, stack, mins);
    		return mins[0];
    	}
    
    	/**
    	 * 求数组的m位组合,递归方法
    	 *
    	 * @param ints 要求的数组 
    	 * @param start 开始求组合的元素下标
    	 * @param combinateDigit 要求的组合数
    	 * @param stack 存放一次组合的结果
    	 * @param mins 存放m个字符值的最小值,即最终结果
    	 */
    	private void combinateNum(int[] ints, int start, int combinateDigit, Stack<Integer> stack, Integer[] mins) {
    		if (combinateDigit <= 0) {
    			// 遍历获取栈,求得拼接的值的大小(这里不考虑大数范围)
    			int tempMin = 0;
    			for (int i = 0; i < stack.size(); i++) {
    				tempMin = tempMin + ((int) Math.pow(10, stack.size() - i - 1)) * stack.get(i);
    				// System.out.print(stack.get(i) + " ");
    			}
    			// System.out.println();
    			// 重新赋值最小值
    			if (mins[0] == null || mins[0] > tempMin) {
    				mins[0] = tempMin;
    			}
    			return;
    		}
    		if (start > ints.length - 1) {
    			return;
    		}
    		stack.push(ints[start]);
    		combinateNum(ints, start + 1, combinateDigit - 1, stack, mins);
    		stack.pop();
    		combinateNum(ints, start + 1, combinateDigit, stack, mins);
    	}
    
    	/**
    	 * 不用比较,找出两个数中最大的和最小的(不考虑溢出情况)
    	 */
    	public void findTwoNumMinAndMax(int a, int b) {
    		int signA = sign(a - b);
    		int signB = flip(signA);
    		System.out.println("较大的数为:" + (signA * a + signB * b));
    		System.out.println("较小的数为:" + (signB * a + signA * b));
    
    	}
    
    	/**
    	 * 取相反的数,如果是1,则返回0,如果是0,则返回1
    	 */
    	private int flip(int n) {
    		return n ^ 1;
    	}
    
    	/**
    	 * 判断某个数的符号
    	 *
    	 * @param n
    	 *            要判断的数
    	 * @return 如果是正数,返回1,如果是负数返回0
    	 */
    	private int sign(int n) {
    		return (n >>> 31) ^ 1;
    	}
    }
    
    
    
    展开全文
  • 多益笔试题一小部分

    2015-03-18 21:06:39
    下午多益笔试 记得一点点题目回来敲了一下 下次上下一部分 #include using namespace std; class A { public: virtual void f1() { cout()"; f2(); } virtual void f2() { cout()"; } }; class B :p

    下午多益笔试 记得一点点题目回来敲了一下 下次上下一部分

    #include <iostream>
    using namespace std;
    class A
    {
    public:
    	virtual void f1()
    	{
    		cout<<"A::f1()"<<endl;
    		f2();
    	}
    	virtual void f2()
    	{
    		cout<<"A::f2()"<<endl;
    	}
    };
    class B :public A
    {
    public:
    	virtual void f1()
    	{
    		cout<<"B::f1()"<<endl;
    		f2();
    	}
    	virtual void f2()
    	{
    		cout<<"B::f2()"<<endl;
    	}
    
    };
    class C:public B
    {
    public:
    	virtual void f1()
    	{
    		cout<<"C::f1()"<<endl;
    		
    	}
    
    };
    void testClass()
    {
    	A *AA;
    	C cc;
    	AA=&cc;
    	AA->f1();
    	AA->f2();
    
    }
    考继承时候对象的函数是哪个

    #include <iostream>
    using namespace std;
    
    class String
    {
    
    public:
    	String(const char* m_str =NULL);//默认构造函数
    	String(const String &str);//拷贝构造函数
    	~String();//析构函数
    	void operator+(const String &str);//+运算符
    	void operator=(const String &str);//赋值运算符
    private:
    	char* m_data;
    };
    
    String::String(const char* m_str)
    {
    	cout<<"default constructor called!"<<endl;
    	int len=0;
    	while(*(m_str+len)!='\0')
    		len++;
    
    	m_data =new char(len+1);
    	m_data[len]='\0';
    	int i;
    	for(i=0;i<len;i++)
    	{
    		m_data[i]=m_str[i];
    	}
    	//cout<<"length ="<<len<<" string="<<this->m_data<<endl;
    
    }
    String::~String()
    {
    	cout<<"~String() called!"<<endl;
    	
    }
    String::String(const String &str)
    {
    	cout<<"copy constructor called!"<<endl;
    	int len=0;
    	while(*(str.m_data+len)!='\0')
    		len++;
    
    	m_data =new char(len+1);
    	m_data[len]='\0';
    	int i;
    	for(i=0;i<len;i++)
    	{
    		m_data[i]=str.m_data[i];
    	}
    	
    }
    void String::operator+(const String &str)
    {
    
    	int len1=0;
    	int len2=0;
    
    	while(*(this->m_data+len1)!='\0')
    		len1++;	
    	while(*(str.m_data+len2)!='\0')
    	{
    		len2++;
    	}
    	char* temp= new char(len1+len2);
    	temp[len1+len2-1]='\0';
    	int i;
    	for(i=0;i<len1;i++)
    	{
    		temp[i]=this->m_data[i];
    		
    
    	}
    
    	for(i=0;i<len2;i++)
    	{
    		temp[i+len1-1]=str.m_data[i];
    		
    	}
    
    	cout<<temp<<endl;
    
    
    
    	
    }
    void String::operator=(const String &str)
    {
    	int len=0;
    	while(*(str.m_data+len)!='\0')
    		len++;
    
    	char* temp =new char(len+1);
    	temp[len]='\0';
    	int i;
    	for(i=0;i<len;i++)
    	{
    		temp[i]=str.m_data[i];
    	}
    
    	cout<<this->m_data<<endl;
    }


    试卷是写了类内的几个函数,让我们实现,主要是const不能直接拷贝,巨坑。重载运算符也不熟悉。

    #include <iostream>
    #include <stdio.h>
    using namespace std;
    
    void test1()
    {
    	int a=0210;
    	printf("%x\n",a);
    }
    void test2()
    {
    	char str[] ="abcdefghijklnm";
    	printf("%s\n",str);
    	printf("%s\n",str+3);
    	printf("%s\n",(char*)((int*)str+1));
    }
    char* tenToBinary(int value)
    {
    	int i=1;
    	int temp=1;
    	while(temp<value)
    	{
    		temp=temp*2;
    		i++;
    	}
    	char *str=new char(i);
    	str[i-1]='\0';
    	temp=value;
    	i=i-2;
    	while(temp>=1)
    	{
    		if(temp%2==1)
    			str[i]='1';
    		else if(temp%2==0)
    			str[i]='0';
    		i--;
    		temp=temp/2;
    	
    	}
    	return str;
    	
    }

    int 零开头的是八进制 %x是十六进制

    (char*)((int*)str+1)的意思就是一个整数4个byte就往右移4个位置 %s输出字符串

    十进制转二进制不记得了 巨坑。



    展开全文
  • 多益笔试总结

    千次阅读 2017-08-29 21:04:45
    1.用css实现带边框的右三角,兼容IE7 ... 多益 div.setAttribute("id","test");3.http://www.bkjia.com/HTML_CSS/1120264.html 4.有哪些的隐藏内容的方法(如果同时还要保证屏幕阅读器可用呢?) 5.为什么用

    1.用css实现带边框的右三角,兼容IE7
    2.使用JS实现以下DOM结构

    <div id="test">
     <p id="test1">多益</p>
    </div>
    div.setAttribute("id","test");

    3.http://www.bkjia.com/HTML_CSS/1120264.html
    4.有哪些的隐藏内容的方法(如果同时还要保证屏幕阅读器可用呢?)

    方法一:display:none;搜索引擎可能认为被隐藏的文字属于垃圾信息而被忽略,屏幕阅读器(是为视觉上有障碍的人设计的读取屏幕内容的程序)会忽略被隐藏的文字。所以这个方法并不适用。
    方法二:visibility: hidden ;这个大家应该比较熟悉就是隐藏的内容会占据他所应该占据物理空间。即内容虽然被隐藏,但是它所在的文档流的位置变成空白,会占据页面上的空间。
    方法三:overflow:hidden;可以达到隐藏内容的目的且同时可以被屏幕阅读器可用。
    方法四:利用定位将内容移出屏幕。
    方法五:内容透明度设置为0.

    5.为什么用多个域名来存储网站资源会更有效
    1、CDN缓存更方便
    2、突破浏览器并发限制
    3、节约cookie带宽
    4、节约主域名的连接数,优化页面响应速度
    5、防止不必要的安全问题

    解释
    1. 静态内容和动态内容分服务器存放,使用不同的服务器处理请求。处理动态内容的只处理动态内容,不处理别的,提高效率,这样使得CDN(内容分发网络)缓存更方便
    2、 突破浏览器并发限制 (你随便挑一个 G家的 url: https://lh4.googleusercontent.com/- si4dh2myPWk/T81YkSi__AI/AAAAAAAAQ5o/LlwbBRpp58Q/w497-h373/IMG_20120603_163233.jpg, 把前面的 lh4换成 lh3,lh6 啥的,都照样能够访问,像地图之类的需要大量并发下载图片的站点,这个非常重要。)
    3、跨域不会传cookie,节省宽带;举例说一下:
    twitter 的主站 http://twitter.com ,用户的每次访问,都会带上自己的cookie ,挺大的。假如twitter 的图片放在主站域名下,那么用户每次访问图片时,request header 里就会带有自己的cookie ,header 里的cookie 还不能压缩,而图片是不需要知道用户的cookie 的,所以这部分带宽就白白浪费了。
    写主站程序时,set-cookie 也不要set 到图片的域名上。
    在小流量的网站,这个cookie 其实节省不了多少带宽,当流量如facebook twitter 时,节省下来就很可观了。

    关于多域名,也不是越多越好,虽然服务器端可以做泛解释,浏览器做dns解释也是耗时间的,而且太多域名,如果要走 https的话,还有要多买证书和部署的问题

    6.js的splice方法
    7. cookies ,localstorage和sessionstorage的区别
    从三方面解释

    1. 用Promise的构造函数实现一个promise的例子
    2. HTTP2.0 的特性:1,多路复用 2. 服务器推送 3.头信息压缩
      参考:http://www.cnblogs.com/etoah/p/5891285.html
      4.优先级请求
      流量控制和优先级确保正确使用复用流,流量控制有助于确保只传播接受需要的数据,优先级确保有限的资源能被重要的请求使用,相比HTTP1.x按顺序接收数据更加稳定高效
      10.考了其中一道

    第25题. 在HTML页面中,下面有关的Document对象的描述错误的是()。(选择一项)
    A. Document对象用于检查和修改HTML元素和文档中的文本
    B. Document对象用于检索浏览器窗口中的HTML文挡的信息
    C. Document对象提供客户最近访问的URL的列表
    D. Document对象的location属性包含有关当前URL的信息
    正确答案为:C
    参考js题库:https://wenku.baidu.com/view/b314932ccfc789eb172dc81f.html
    11.数组去重的方法,例举2种以上,写出思路。
    参考:http://web.jobbole.com/83425/
    12.var a=[1,2,3,4,5]
    a.splice(2,0,”a”);
    13.

    if(!("a" in window)){var a=1;}
    console.log(a);

    14.

    var a=new Date("2014-03-19");
    var b=new Date(2014,03,19);
    a.getDay()===b.getDay()
    a.getMonth()===b.getMonth()
    展开全文
  • 简单说说多益笔试

    2017-06-21 00:40:00
    一、选择题 考了spring、java虚拟机... 二、填空题 ....(忘了) 三、简答题 (1)面向对象三个特性 (2)三次握手-四次握手 (3)数据库操作 四、编程题 ...(3)一堆数中找出等于s的个数...
  • 多益 笔试:编程题,按权重取样品

    千次阅读 2018-09-07 18:17:35
    问题描述: 编程题:有n个样品,第i个样品的权重对应i,权重大的个体被抽到的概率大,权重小的个体被抽到的概率小,现在要求按比重从中随机选取一个样品。 第一步,将样品按序号放入HashMap中。...
  • 多益笔试+字节对齐

    2016-08-25 16:52:33
    struct {   int a;   char b;   long c;   short d;   short e[5];   }*p; P=0x1000000; P+0x200=? (unsigned long*)p+0x200=? (unsigned char*)p+0x200=? 分析:本题考察字节对齐 ...Struct AA{
  • 参考:http://blog.163.com/zhaohai_1988/blog/static/2095100852012716105847112/
  • 数据结构做得少,被坑得外焦里嫩~ 是否有环,代码量如此低…… bool IfCircle(LinkList *root) { /* 追赶式验证是否存在环 */ LinkList *fast=root; LinkList *slow=root;... f...
  • 题目: 给定一个单链表,随机选择链表的一个节点,并返回相应的节点值。保证每个节点被选的概率一样。 进阶: 如果链表十分大且长度未知,如何解决这个问题?你能否使用常数级空间复杂度实现?...
  • 广州多益笔试,收集的较全面的资源,大家可以借鉴
  • 多益网络笔试

    千次阅读 2018-09-06 23:01:06
    多益网络笔试 今天要参加多益网络的笔试,索性在网络上搜了一下该贵公司的试题,看到了一哥们发的这样一个题目,原文地址参见这里。看了一下该哥们的答案,感觉过于复杂,并且也没有得到相应的答案。就自己写了一下...
  • 某道笔试——多益

    2021-10-16 19:51:21
    当时写错了的一道多益笔试题 const data1={ 2:2, 3:3 } Array.prototype.push.call(data1,4); console.log(data1); const data2={ 2:2, 3:3, length:2 } Array.prototype.push.call(data2,4); console.log...
  • 2013年12月多益网络笔试题,照片形式,清晰
  • 多益网络笔试

    千次阅读 2020-08-15 19:26:03
    多益网络笔试编程题 梦幻数 输入一个数字n 将其按各个位上的数反复展开 用平方和代替这个n 直到最后结果为1时 则为梦幻数 例如 输入: 19 展开: 1^2+9^2 = 82 8^2+2^2 = 68 6^2+8^2 = 100 1^2+0^2+...
  • 2019年秋招多益前端笔试
  • 多益往年笔试

    2016-10-20 20:54:30
    1.一条语句判断是不是2的幂次方bool IsTwoPower(int m) { return (m&(m-1))?false:true; }2、已知一个1到5随机函数,求一个1到7的随机函数 思路:利用rand5得到rand2,然后靠着001到111表示0到7 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,623
精华内容 649
关键字:

多益笔试