SENI #007
SENI #007
SENI adalah kegiatan yang diprakarsai oleh
由左耳朵耗子--陈皓: Kerjakan setidaknya satu pertanyaan algoritma leetcode setiap minggu, baca dan komentari setidaknya satu artikel teknis berbahasa Inggris, pelajari setidaknya satu keterampilan teknis, dan bagikan artikel yang berisi opini dan pemikiran. (Artinya, Algoritma, Review, Tip, dan Share disebut sebagai SENI) dan bertahan setidaknya selama satu tahun.
SENI 007
Ini adalah artikel ke-7. Dulu saya bingung ketika melihat algoritma, tapi sekarang perlahan-lahan saya mulai merasakannya dan punya ide. Saya berharap ini akan menjadi lebih baik dan lebih baik lagi di masa depan.
Pertanyaan algoritma algoritma
pertanyaan algoritma leetcode 15 3Sum: Kesulitan: Sedang
Given an array nums of n integers, are there elements a, b, c in nums such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.
Note:
The solution set must not contain duplicate triplets.
Example:
Given array nums = [-1, 0, 1, 2, -1, -4],
A solution set is:
[
[-1, 0, 1],
[-1, -1, 2]
]
Cara pertama yang terlintas dalam pikiran adalah sebagai berikut, yang tentu saja paling tidak efisien. Di perangkat saya, diperlukan waktu 15 detik untuk menguji 3.000 data.
int** threeSum(int* nums, int numsSize, int* returnSize) {
int **a= NULL; //用二级指针动态申请二维数组
int count = 0;
for (int i =0; i < numsSize-2; i++) {
for (int j =i+1; j < numsSize-1; j++) {
for (int k =j+1; k<numsSize; k++) {
int first = nums[i];
int second = nums[j];
int third = nums[k];
if (first + second + third == 0) {
if (first < second ) {
int temp =first;
first = second;
second = temp;
}
if (first < third ) {
int temp =first;
first = third;
third = temp;
}
if (second<third) {
int temp =second;
second = third;
third = temp;
}
int b = 0;
if(a != NULL){
for (int loop = 0; loop < count; loop++) {
int *aa = a[loop];
if (aa[0] == first && aa[1] == second) {
//已经存在
b = 1;
break;
}
}
}
if (b == 0) {
int* result = (int*)malloc(sizeof(int) * (3));
result[0] = first;
result[1] = second;
result[2] = third;
if (count ==0) {
count++;
a=(int**)malloc(sizeof(result)*count);
}
else{
count++;
a=(int**)realloc(a,sizeof(int*)*count);
}
a[count-1] = result;
}
}
}
}
}
*returnSize = count;
return a;
}
Melihat petunjuknya, semuanya diurutkan terlebih dahulu. Setelah menyortir, saya memikirkan pencarian biner, jadi saya menerapkannya sebagai berikut
/插入排序
int* insertionSort(int nums[],int numsSize) {
for (int j = 1; j < numsSize; j++) {
int sortingNum = nums[j];
for (int i = j-1; i >=0; i--) {
if (sortingNum < nums[i] ) {
int temp = nums[i+1];
nums[i+1] = nums[i];
nums[i] = temp;
}
}
}
return nums;
}
// 二分查找
int binary_search(int arr[],int left,int right,int element){
while(left<=right) {
int mid = (left+right)/2;
if(arr[mid]>element){
right = mid - 1;
}
else if(arr[mid]<element){
left = mid + 1;
}
else{
return mid;
}
}
return -1;
}
int** threeSum3(int* nums1, int numsSize, int* returnSize) {
int *dddsd = insertionSort(nums1,numsSize);
if(dddsd[0] > 0)
return NULL;
if(dddsd[numsSize-1] < 0)
return NULL;
int **result= NULL; //用二级指针动态申请二维数组
int count = 0;
for (int i =0; i < numsSize-2 && dddsd[i] <=0; i++) {
for (int j =numsSize-1; j >i && dddsd[j] >= 0; j--) {
int first = dddsd[i];
int second = dddsd[j];
int third = 0 - first - second;
int dfsd =binary_search(dddsd, i+1, j-1, third);
if (dfsd == -1) {
continue;
}
third = dddsd[dfsd];
int b = 0;
if(result != NULL){
for (int loop = 0; loop < count; loop++) {
int *aa = result[loop];
if (aa[0] == first && aa[1] == second) {
//已经存在
b = 1;
break;
}
}
}
if (b == 0) {
int* sums = (int*)malloc(sizeof(int) * (3));
sums[0] = first;
sums[1] = second;
sums[2] = third;
if (count ==0) {
count++;
result=(int**)malloc(sizeof(sums)*count);
}
else{
count++;
result=(int**)realloc(result,sizeof(int*)*count);
}
result[count-1] = sums;
}
}
}
*returnSize = count;
return result;
}
Algoritma di atas, untuk mencegah duplikasi, akan membandingkannya dengan algoritma sebelumnya setiap kali hasilnya ditambahkan. Operasi ini sebenarnya dapat dioptimalkan, dan implementasi akhirnya adalah sebagai berikut:
//插入排序
int* insertionSort(int nums[],int numsSize) {
for (int j = 1; j < numsSize; j++) {
int sortingNum = nums[j];
for (int i = j-1; i >=0; i--) {
if (sortingNum < nums[i] ) {
int temp = nums[i+1];
nums[i+1] = nums[i];
nums[i] = temp;
}
}
}
return nums;
}
// 二分查找
int binary_search(int arr[],int left,int right,int element){
while(left<=right) {
int mid = (left+right)/2;
if(arr[mid]>element){
right = mid - 1;
}
else if(arr[mid]<element){
left = mid + 1;
}
else{
return mid;
}
}
return -1;
}
int** threeSum(int* nums, int numsSize, int* returnSize) {
int *sortedNums = insertionSort(nums,numsSize);
if(sortedNums[0] > 0)
return NULL;
if(sortedNums[numsSize-1] < 0)
return NULL;
int **result= NULL; //用二级指针动态申请二维数组
int count = 0;
for (int i =0; i < numsSize-2 && sortedNums[i] <=0; i++) {
if (i > 0 && sortedNums[i] == sortedNums[i-1]) {
continue;
}
for (int j =numsSize-1; j >i && sortedNums[j] >= 0; j--) {
if (j < numsSize-1 && sortedNums[j] == sortedNums[j+1]) {
continue;
}
int first = sortedNums[i];
int second = sortedNums[j];
int third = 0 - first - second;
int dfsd =binary_search(sortedNums, i+1, j-1, third);
if (dfsd == -1) {
continue;
}
third = sortedNums[dfsd];
int* sums = (int*)malloc(sizeof(int) * (3));
sums[0] = first;
sums[1] = second;
sums[2] = third;
if (count ==0) {
count++;
result=(int**)malloc(sizeof(sums)*count);
}
else{
count++;
result=(int**)realloc(result,sizeof(int*)*count);
}
result[count-1] = sums;
}
}
*returnSize = count;
return result;
}
Ulasan
Dapatkan dengan program ini INGIN pekerjaan di perusahaan multinasional yang sukses? Anda akan menghadapi banyak persaingan. Dua tahun lalu Goldman Sachs menerima seperempat juta lamaran dari mahasiswa dan lulusan. Hal ini bukan hanya merupakan peluang yang menakutkan bagi para pencari kerja; itu adalah masalah praktis bagi perusahaan. Jika sebuah tim yang terdiri dari lima staf sumber daya manusia Goldman, yang bekerja 12 jam setiap hari, termasuk akhir pekan, menghabiskan lima menit untuk setiap lamaran, mereka akan membutuhkan waktu hampir satu tahun untuk menyelesaikan tugas memilah-milah tumpukan tersebut.
Mencari posisi di perusahaan multinasional yang sukses? Maka Anda harus menghadapi banyak persaingan. Dua tahun lalu Goldman Sachs menerima 250.000 lamaran pekerjaan dari mahasiswa dan lulusan. Hal ini tidak hanya membuat pencari kerja memiliki peluang sukses yang kecil, namun juga membawa masalah nyata bagi perusahaan. Dengan asumsi bahwa sebuah tim yang terdiri dari lima karyawan di departemen sumber daya manusia Goldman Sachs bekerja 12 jam sehari, sepanjang waktu, dan menghabiskan lima menit untuk setiap lamaran, maka diperlukan waktu hampir satu tahun untuk menyaring tumpukan lamaran ini.
Tidak mengherankan jika sebagian besar perusahaan besar menggunakan program komputer, atau algoritma, ketika menyaring kandidat yang mencari pekerjaan junior. Dan itu berarti pelamar akan mendapatkan keuntungan dengan mengetahui secara pasti apa yang dicari oleh algoritma tersebut.
Tidak mengherankan jika sebagian besar perusahaan besar menggunakan program komputer, yang dikenal sebagai algoritma, untuk menyaring kandidat untuk posisi di tingkat yang lebih rendah. Ini berarti pencari kerja bisa mendapatkan keuntungan dengan mengetahui secara pasti apa yang dicari oleh algoritma tersebut.
Victoria McLean adalah mantan headhunter perbankan dan manajer rekrutmen yang mendirikan bisnis bernama City CV, yang membantu calon pekerja dalam melamar pekerjaan. Dia mengatakan sistem pelacakan pelamar (ATS) menolak hingga 75% CV, atau resume, sebelum manusia melihatnya. Sistem seperti itu mencari kata kunci yang memenuhi kriteria pemberi kerja. Salah satu tipnya adalah mempelajari bahasa yang digunakan dalam iklan lowongan kerja; jika inisial PM digunakan untuk manajemen proyek, maka pastikan PM muncul di CV Anda.
Victoria McLean, mantan headhunter perbankan dan manajer rekrutmen, memulai sebuah perusahaan bernama City CV untuk membantu pencari kerja menyusun lamaran mereka. Dia mengatakan Sistem Pelacakan Pelamar (ATS) menolak hingga 75% lamaran sebelum manusia dapat memproses resume. Sistem ini mencari kata kunci yang sesuai dengan kriteria perusahaan. Tip singkatnya adalah meneliti bahasa yang digunakan dalam iklan pekerjaan. Jika inisial PM digunakan untuk merujuk pada manajemen proyek, maka pastikan Anda memiliki PM di resume Anda.
Artinya, CV generik bisa saja gagal pada rintangan pertama. Ms McLean memiliki klien yang pernah menjadi anggota senior angkatan bersenjata. Pengalamannya menunjukkan potensi pekerjaan di bidang pelatihan dan pendidikan, pengadaan atau penjualan pertahanan. Strategi terbaik adalah membuat tiga CV berbeda menggunakan kumpulan kata kunci berbeda. Dan pencari kerja juga perlu memastikan bahwa profil LinkedIn dan CV mereka saling memperkuat; sebagian besar perekrut akan menggunakan situs web ini untuk memeriksa kualifikasi kandidat, katanya.
Artinya, resume yang tidak tepat sasaran bisa saja tidak melewati rintangan pertama. McClain memiliki klien yang merupakan perwira militer berpangkat tinggi. Dilihat dari resumenya, ia mungkin memiliki peluang kerja di bidang pelatihan dan pendidikan, pengadaan, atau penjualan senjata. Strategi terbaik, katanya, adalah membuat tiga resume berbeda menggunakan tiga rangkaian kata kunci berbeda. Kandidat juga perlu memastikan profil LinkedIn mereka cocok dengan resume mereka—sebagian besar perekrut menggunakan situs ini untuk memeriksa kualifikasi kandidat.
Melewati tahap ATS mungkin bukan satu-satunya hambatan teknologi bagi pencari kerja. Banyak perusahaan, termasuk Vodafone dan Intel, menggunakan layanan wawancara video yang disebut HireVue. Kandidat ditanyai sementara program kecerdasan buatan (AI) menganalisis ekspresi wajah mereka (disarankan menjaga kontak mata dengan kamera) dan pola bahasa (terdengar percaya diri adalah kuncinya). Orang yang melambaikan tangannya atau membungkuk di tempat duduknya kemungkinan besar akan gagal. Hanya jika mereka lulus ujian itu barulah pelamar akan bertemu dengan beberapa manusia.
ATS mungkin bukan satu-satunya kendala teknis yang dihadapi pencari kerja. Banyak perusahaan, termasuk Vodafone dan Intel, telah mengadopsi layanan wawancara video yang disebut HireVue. Saat kandidat menjawab pertanyaan video, program AI menganalisis ekspresi wajah mereka (disarankan menjaga kontak mata dengan kamera) dan pola bicara (terdengar percaya diri adalah kuncinya). Orang yang mengayunkan lengannya atau duduk dalam posisi bungkuk kemungkinan besar akan gagal. Baru setelah lulus tes ini pencari kerja dapat bertemu dengan beberapa pewawancara.
Anda mungkin berharap program AI mampu menghindari beberapa bias dalam metode rekrutmen konvensional—terutama kecenderungan pewawancara lebih memilih kandidat yang mirip dengan pewawancara. Namun diskriminasi dapat muncul dengan cara yang tidak terduga. Anja Lambrecht dan Catherine Tucker, dua ekonom, memasang iklan yang mempromosikan pekerjaan di bidang sains, teknologi, teknik, dan matematika di Facebook. Mereka menemukan bahwa iklan tersebut lebih kecil kemungkinannya untuk ditampilkan kepada perempuan dibandingkan laki-laki.
Mungkin Anda mengira program AI akan mampu menghindari beberapa bias yang ada dalam metode perekrutan tradisional, terutama kecenderungan pewawancara untuk memilih kandidat yang mirip dengan dirinya. Namun diskriminasi dapat muncul dengan cara yang tidak terduga. Dua ekonom, Anja Lambrecht dan Catherine Tucker, memasang iklan di Facebook yang mempromosikan peluang kerja di bidang sains, teknologi, teknik, dan matematika. Mereka menemukan bahwa iklan-iklan ini lebih cenderung ditayangkan kepada laki-laki dibandingkan perempuan.Hal ini bukan disebabkan oleh bias yang disengaja dari algoritma Facebook. Sebaliknya, perempuan muda merupakan kelompok demografis yang lebih berharga di Facebook (karena mereka mengontrol sebagian besar pengeluaran rumah tangga) sehingga iklan yang menargetkan mereka lebih mahal. Algoritme tersebut secara alami menargetkan halaman dengan laba atas investasi tertinggi: untuk pria, bukan wanita.
Ini bukan hasil dari bias yang disengaja dalam algoritma Facebook. Sebaliknya, perempuan muda merupakan kelompok yang lebih bernilai di Facebook (karena mereka mengendalikan sebagian besar pengeluaran rumah tangga), sehingga iklan yang menargetkan mereka lebih mahal. Algoritme ini secara alami menargetkan halaman dengan laba atas investasi tertinggi: pria, bukan wanita.
Dalam buku mereka* tentang kecerdasan buatan, Ajay Agrawal, Joshua Gans, dan Avi Goldfarb dari Rotman School of Management di Toronto mengatakan bahwa perusahaan tidak bisa begitu saja mengabaikan hasil tersebut sebagai efek samping yang tidak menguntungkan dari sifat “kotak hitam” algoritma. Jika mereka menemukan bahwa keluaran sistem AI bersifat diskriminatif, mereka perlu mencari tahu alasannya, dan kemudian menyesuaikan algoritme hingga efeknya hilang.
Ajay Agrawal, Joshua Gans, dan Avi Goldfarb dari Rotman School of Management Universitas Toronto menulis dalam rekan penulis mereka tentang kecerdasan buatan* bahwa perusahaan tidak bisa begitu saja mengabaikan hasil seperti itu sebagai efek samping yang tidak menguntungkan dari sifat algoritma “kotak hitam”. Jika mereka menemukan bahwa keluaran sistem AI bersifat diskriminatif, mereka perlu mencari tahu alasannya dan kemudian menyesuaikan algoritme hingga dampaknya hilang.
Kekhawatiran mengenai potensi bias dalam sistem AI telah muncul di berbagai bidang, mulai dari peradilan pidana hingga asuransi. Dalam perekrutan, perusahaan juga akan menghadapi risiko hukum dan reputasi jika metode perekrutan mereka ternyata tidak adil. Namun mereka juga perlu mempertimbangkan apakah program tersebut tidak hanya menyederhanakan proses. Misalnya, apakah kandidat yang berhasil memiliki karier yang panjang dan produktif? Bagaimanapun juga, pergantian staf adalah salah satu biaya rekrutmen terbesar yang dihadapi perusahaan.
Potensi bias dari sistem AI telah menimbulkan kekhawatiran di banyak bidang, mulai dari peradilan pidana hingga asuransi. Hal yang sama juga berlaku untuk rekrutmen personel. Jika perusahaan menggunakan metode rekrutmen yang tidak adil, mereka akan menghadapi risiko hukum dan reputasi. Namun mereka juga perlu mempertimbangkan apakah program-program ini dapat memberikan manfaat lebih dari sekedar menyederhanakan proses perekrutan. Misalnya, apakah kandidat yang sukses akan tetap bekerja di perusahaan dalam jangka panjang dan produktif? Bagaimanapun, pergantian karyawan adalah salah satu biaya perekrutan terbesar yang dihadapi perusahaan.
Mungkin juga akan terjadi perlombaan senjata ketika para kandidat belajar bagaimana menyesuaikan CV mereka agar lulus tes AI awal, dan algoritma beradaptasi untuk menyaring lebih banyak kandidat. Hal ini menciptakan potensi bias lainnya: kandidat dari rumah tangga yang berada (dan dari kelompok tertentu) mungkin lebih cepat memperbarui CV mereka. Pada gilirannya, hal ini mungkin mengharuskan perusahaan untuk menyesuaikan algoritma mereka lagi untuk menghindari diskriminasi. Harga dari kecerdasan buatan tampaknya adalah kewaspadaan abadi.
Ketika para kandidat belajar menyesuaikan resume mereka agar lulus tes AI awal, dan algoritma ditingkatkan untuk menyaring lebih banyak pelamar, hal ini dapat memicu perlombaan senjata. Hal ini menciptakan ruang bagi potensi bias lainnya: Kandidat dari keluarga kaya (dan kelompok tertentu) mungkin dapat memperbarui resume mereka dengan lebih cepat. Pada gilirannya, perusahaan mungkin perlu menyesuaikan kembali algoritma mereka untuk menghindari diskriminasi. Dampak dari penggunaan kecerdasan buatan tampaknya adalah kewaspadaan terus-menerus.
TIPS:
Cara menerapkan ukuran busur berbeda di berbagai sudut tampilan
Potong keempat sudut kanan tampilan menjadi sudut membulat:
//设置圆角半径值
self.view.layer.cornerRadius = 10.f;
//设置为遮罩,除非view有阴影,否则都要指定为YES的
self.view.layer.masksToBounds = YES;
- Potong sudut pandang kanan menjadi sudut membulat:
//把 view2 的 左下角 和 右下角的直角切成圆角
UIView *view2 = [[UIView alloc] initWithFrame:CGRectMake(120,10,80,80)];
view2.backgroundColor = [UIColor redColor];
[self.view addSubview:view2];
//设置切哪个直角
// UIRectCornerTopLeft = 1 << 0, 左上角
// UIRectCornerTopRight = 1 << 1, 右上
// UIRectCornerBottomLeft = 1 << 2, 左下角
// UIRectCornerBottomRight = 1 << 3, 右下角
// UIRectCornerAllCorners = ~0UL 全部角
//得到view的遮罩路径
UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:view2.bounds byRoundingCorners:UIRectCornerBottomLeft | UIRectCornerBottomRight cornerRadii:CGSizeMake(10,10)];
//创建 layer
CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
maskLayer.frame = view2.bounds;
//赋值
maskLayer.path = maskPath.CGPath;
Sudut membulat yang diatur dengan cara di atas memiliki busur yang sama untuk setiap sudut membulat. Jadi bagaimana cara mencapai empat sudut dengan ukuran sudut membulat yang berbeda? Kunci untuk mewujudkan sudut membulat di atas adalah jalur CAShapeLayer, jadi kita hanya perlu menyesuaikan jalur ini. Implementasinya adalah sebagai berikut:
- (void)setViewRadius:(UIView *)view{
CGFloat topLeftRadius = 50;
CGFloat topRightRadius = 60;
CGFloat bottomRightRadius = 40;
CGFloat bottomLeftRadius = 30;
CGFloat minx = CGRectGetMinX(view.bounds);
CGFloat miny = CGRectGetMinY(view.bounds);
CGFloat maxx = CGRectGetMaxX(view.bounds);
CGFloat maxy = CGRectGetMaxY(view.bounds);
UIBezierPath *path = [[UIBezierPath alloc] init];
[path moveToPoint:CGPointMake(minx + topLeftRadius, miny)];
[path addLineToPoint:CGPointMake(maxx - topRightRadius, miny)];
[path addArcWithCenter:CGPointMake(maxx - topRightRadius, miny + topRightRadius) radius: topRightRadius startAngle: 3 * M_PI_2 endAngle: 0 clockwise: YES];
[path addLineToPoint:CGPointMake(maxx, maxy - bottomRightRadius)];
[path addArcWithCenter:CGPointMake(maxx - bottomRightRadius, maxy - bottomRightRadius) radius: bottomRightRadius startAngle: 0 endAngle: M_PI_2 clockwise: YES];
[path addLineToPoint:CGPointMake(minx + bottomLeftRadius, maxy)];
[path addArcWithCenter:CGPointMake(minx + bottomLeftRadius, maxy - bottomLeftRadius) radius: bottomLeftRadius startAngle: M_PI_2 endAngle:M_PI clockwise: YES];
[path addLineToPoint:CGPointMake(minx, miny + topLeftRadius)];
[path addArcWithCenter:CGPointMake(minx + topLeftRadius, miny + topLeftRadius) radius: topLeftRadius startAngle: M_PI endAngle:3 * M_PI_2 clockwise: YES];
[path closePath];
CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
maskLayer.path = path.CGPath;
view.layer.mask = maskLayer;
Berikan demo UIView lainnya untuk mengimplementasikan warna gradien.
UIColor *frameColor = [UIColor colorWithHexString:@"#FFB300"];
UIColor *toColor = [UIColor colorWithHexString:@"#FF6100"];
CAGradientLayer *gradientLayer = [CAGradientLayer layer];
gradientLayer.locations = @[@0.0, @1.0];
gradientLayer.startPoint = CGPointMake(0, 0);
gradientLayer.endPoint = CGPointMake(1.0, 0);
gradientLayer.frame = _bgImageView.bounds;
gradientLayer.colors = @[(__bridge id)frameColor.CGColor, (__bridge id)toColor.CGColor];
[_bgImageView.layer insertSublayer:gradientLayer atIndex:0];
Bagikan:
Ada Tanya Jawab Zhihu yang sedang viral hari ini, ~~ Apakah konstruksi teknologi Tencent saat ini (pada tahun 2018) tertinggal dibandingkan perusahaan dengan ukuran yang sama? ~~,yJawaban bernama tangguh menjadi populer, tetapi jawaban penulisnya dihapus sehari setelah diposting. Namun, ada cadangan online. Jika Anda tertarik, Anda bisa mencarinya.
Izinkan saya berbagi pemikiran saya tentang masalah ini:
Artikel tersebut membahas tentang teknologi yang buruk, cadangan talenta yang tidak mencukupi, penyelesaian teknologi, dan peraturan serta regulasi internal yang relatif kaku di dalam perusahaan. Perusahaan tempat saya bekerja sebenarnya seperti ini. Banyak sistem perusahaan yang tidak kondusif bagi perkembangan teknologi perusahaan. Banyak dari pemimpin junior perusahaan adalah orang-orang tua yang telah bekerja di perusahaan selama lebih dari 5 tahun. Keterampilan mereka rata-rata dan mereka bertahan. Beberapa dari mereka bahkan tidak mengetahui Git dan masih menggunakan SVN. Tidak ada yang berani memfaktorkan ulang kode karena tidak ada kasus uji. Jika Anda memperbaiki bug tersebut, Anda harus bertanggung jawab. Sikap pemimpinnya adalah bisa dimanfaatkan.
Dapat dikatakan bahwa tingkat teknis suatu tim bergantung pada kepemimpinan tim tersebut. Jika pola kepemimpinannya cukup besar dan kemampuannya cukup kuat, maka kreativitas seluruh tim akan kuat.
Jika seorang pemimpin berpuas diri, mengejar stabilitas, dan mencegah orang lain menggunakan teknologi baru tanpa membuat kemajuan, maka dia sudah kacau dan harus pergi secepat mungkin.
Di perusahaan besar, sulit bagi programmer akar rumput untuk mengubah situasi ini. Saya pikir satu-satunya cara untuk mengubah situasi ini adalah melalui kepemimpinan.
Ada juga masalah lembur. Faktanya, banyaknya waktu lembur di perusahaan besar bukan karena pekerjaan tidak dapat diselesaikan, melainkan karena perusahaan menjadikan hal tersebut sebagai standar pengukuran beban kerja. Dengan cara ini, apapun yang terjadi, harus ada waktu lembur yang cukup. Umumnya dikenal sebagai proyek wajah.
What to read next
Want more posts about ARTS?
Posts in the same category are usually the best next step for reading more on this topic.
View same categoryWant to keep following #iOS?
Tags are useful for related tools, specific problems, and similar troubleshooting notes.
View same tagWant to explore another direction?
If you are not sure what to read next, return to the homepage and start from categories, topics, or latest updates.
Back home