MENU

网易笔试(Java开发)

• August 4, 2019 • Read: 316 • 学习生涯

Java开发–三部分内容

1:选择题

大部分是Java基础与逻辑思维题,少量的计算机网络知识。

2:编程题

a.小易的分数

题目:q次输入x,问比当前第x人分数值大的人的所占比例

思路:直接遍历输入的数组,记录当前比它大的人数即可。

b.循环问题

题目:问给定的数组是否能成为一个环(每个数要小于两边数的和)

思路:直接排序,然后对最后一个数字进行单独处理

代码:

#include<bits/stdc++.h>
using namespace std;

typedef long long ll;

ll a[100020];

int main(){
    int t,n;
    cin>>t;
    while(t--){
        memset(a,0,sizeof(a));
        cin>>n;
        for(int i = 1; i <= n; i++) cin>>a[i];
        sort(a+1,a+1+n);
        cout<<a[n]<<"  "<<a[n-1]<<"  "<<a[1]<<endl;
        if(a[n] < a[n-1]+a[1]){
            cout<<"YES"<<endl;
        } 
        else{
            if(a[n] < a[n-2]+a[n-1] && a[n-1] < a[n]+a[1])  cout<<"YES"<<endl;
            else cout<<"NO"<<endl;
        }
    }
}

/*
顺序 
1 3 3 4
1 3 4 3
*/

c.循环问题

题目:给定数组,如果两个数相加为奇数,那么就可以进行交换

思路:只要即存在奇数与偶数,那么就可以交换

代码:

作者:NotDeep
链接:https://www.nowcoder.com/discuss/216237
来源:牛客网

#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <cstring>
#include <cmath>
 
const int N = 1e5 + 10;
 
int a[N];
 
using namespace std;
int main()
{
    int n;
    cin >> n;
    int odd = 0,even = 0;
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
        if(a[i]%2==0)
            even++;
        else
            odd++;
    }
    if(even>0 && odd>0)
        sort(a,a+n);
    for(int i=0;i<n;i++)
    {
        printf("%d%c", a[i], i == n - 1 ? '\n' : ' ');
    }
    return 0;
}

d.线段树问题

题目:给定一个数组,q次询问,每次问一x。问:大于等于x的个数有多少个,同时让其对应的值减一。

思路:博主认为是线段树,写不出来。。。。。

3:问答题

1.事务与数据库连接池的关系,JTF事务与普通事务的区别?

2.怎么认为一个类是线程安全的?

Last Modified: August 11, 2019