;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Se cuida, LinkedIn! TikTok agora mostra vagas de emprego e vídeo-currículos

TikTok Resumes, recurso de currículos e empregos da rede social
Imagem: TikTok Resumes, recurso de currículos e empregos da rede social

Felipe Oliveira

Colaboração para Tilt

08/07/2021 13h58

Está procurando emprego? LinkedIn, Catho e Google ganharam um novo concorrente. Agora o TikTok permite que pessoas se candidatem a vagas de empregos através do próprio aplicativo.

O recurso, chamado de TikTok Resumes, possibilita que os candidatos criem um currículo em vídeo e enviem para empresas cadastradas na plataforma, como Target, Shopify, Nascar ou ainda o próprio TikTok.

Mas calma, antes de ir correndo para trocar de roupa e fazer sua produção, saiba que inicialmente esse recurso está disponível apenas para pessoas que moram nos Estados Unidos. Cerca de 30 empresas estão participando do projeto, permitindo que as pessoas se candidatem às vagas até o dia 31 de julho.

Em comunicado, o TikTok afirmou que a intenção é encorajar as pessoas a "mostrar de forma criativa e autêntica seus conjuntos de habilidades e experiências, e usar a hashtag #TikTokResumes em suas legendas ao publicar seu currículo em vídeo na TikTok".

Ao ar a hashtag ou o site tiktokresumes.com, é possível assistir aos vídeos-currículos de outras pessoas e ainda ver conteúdos de criadores relacionados a carreiras — o TikTok sugere ainda que as pessoas sigam alguns desses criadores para ter dicas de empregos.

Os rumores de que a rede social iria investir nesse tipo de recurso começaram em maio deste ano. Segundo o próprio TikTok, atualmente estão cadastrados no TikTok Resumes currículos que variam de nível básico até candidatos mais experientes.

Ainda em comunicado, a empresa disse que "acredita que há uma oportunidade de agregar mais valor à experiência das pessoas com o TikTok, aumentando a utilidade da plataforma como um canal de recrutamento".

Procurada por Tilt, a assessoria de imprensa do TikTok informou que não há previsão do lançamento desse novo recurso no Brasil. "O TikTok Resumes é, por enquanto, um programa piloto nos EUA e não temos outros detalhes para compartilhar."